본문 바로가기

Network/초급 TCP/IP socket

01. 네트워크 프로그래밍 (TCP/IP 소켓 프로그래밍)


TCP/IP

1. 프로토콜(Protocol) - 종단 시스템간 어떻게 데이터 교환을 할 것인지 정한 통신 규약

2. TCP/IP - 호스트들이 상호 통신하기 위한 표준화된 프로토콜

3. TCP/IP 프로토콜 계층 구조


소켓(Socket)
1. 소켓이란 떨어져 있는 두 호스트를 연결해주는 도구를 말합니다

2. 운영체제가 만들어 주는 S/W적인 장치

3. 트랜스포트 계층(TCP,UDP)을 이용하는 API

4. 소켓을 생성한다는 것은 시스템 내부적으로 통신에 필요한 리소스를 할당하는 것을 의미함 


소켓통신 흐름의 이해


LInux의 특징

1) Linux에서는 콘솔, 소켓, 파일 등을 파일로 간주합니다
  1. 모두 파일 디스크립터가 할당됩니다
  2. 파일 입출ㄹ력 함수를 소켓에서도 사용가능합니다
    -read(), write(). close()

2)파일 디스크립터(File Descriptor)
  1. 시스템으로 부터 할당 받은 파일이나 소켓을 대표하는 정수를 말합니다
  2. 파일 디스크립터 0,1,2는 이미 표준 입출력에 할당되어 있습니다
  3. 윈도우즈 기반에서의 handle과 유사합니다

Linux의 파일입출력 함수

1)File 열기 / 닫기


2)데이터 쓰기 / 읽기


Server 소켓 구현

1)소켓 생성



2)주소 할당


3)연결 대기


4)연결 요청 수락


5)소켓 닫기


Client 소켓 구현

1)소켓 생성


2)서버로의 연결 요청



네트워크 프로그래밍 흐름


응용!))
server프로그램이 client프로그램으로 "hello world!"전송

    1. 리눅스에서 server.c client.c 작성
    2. server프로그램을 실행시켜 놓은 상태에서 client 프로그램을 실행시킴

Sever.c


Client.c


결과>>
컴파일후 server 실행



다른 창에서 client실행


Hello world!가 전송된것을 확인 할 수 있다!