Socket Programming & TCP-UDP
Socket Programming
- 사용자 or 개발자는 O.S를 건드리지 않고 프로세스간 통신을 위해 OS가 제공하는 API인 Socket을 사용하여 통신한다
- Transport layer는 이를 지원하며, TCP or UDP 방식의 Socket이 있다.
- Socket 자료구조체에는 socket()-소켓생성, bind()-포트번호 지정, listen()-수신대기, accept()-수신수락, write()-packet 전송 등의 함수로 이루어져 있음
- 이러한 Socket에 대한 관리는 O.S가 다루며, 개발자는 포트번호 지정이나 비즈니스 로직 작성에 집중함
Multiplexing and Demultiplexing
- Multiplexing: 여러 소켓을 통해 전송될 데이터들을 같은 Link를 태워서 Network layer에서 보내기 위해 한 단위로 묶는 것
- Demultiplexing: 묶어서 들어온 여러 데이터들을 올바른 소켓에 연결시켜 Application으로 전달하는 것
UDP Socket
- UDP 사용 시 packet의 header는 source port #, destination port #, length, checksum 4가지로만 구성됨
- destination ip와 port #만 가지고 data를 구분하여 socket에 연결시킴, 즉 서로 다른 source로 들어와도 같은 socket을 이용함
TCP Socket
- source ip&port, destination ip&port 4가지 정보를 모두 이용하여 demultiplexing을 진행함, 따라서 4가지 중 하나라도 다르면 socket이 다름