CS/network
socket, socket programming 관련 개념
민트초코 개발자
2024. 6. 17. 15:54
TCP 프로토콜 표준 스펙에서 Socket 의미
- 인터넷 상에 존재하는 port를 유니크하게 식별하기 위한 주소
- ip, port 쌍으로 socket을 식별
- port는 process와 연결된 data path 혹은 data channel
- 하나의 process에 둘 이상의 port가 존재할 수 있다. (멀티스레드)
- 한 쌍의 socket은 connection을 유니크하게 식별
- 하나의 socket은 동시에 여러 connection에서 사용 가능
- → 서버에서 port 범위보다 많은 connection이 가능한 이유
connection
- 프로세스 간의 안정적이고 논리적인 통신 경로
- 각 connection은 유니크함
- connection을 열고, 데이터를 주고 받고, connection을 닫는다. → Connection-Oriented
- TCP 는 unreliable한 Internet(network) layer 대신해 connection을 통해 reliable 통신을 제공
TCP Socket 동작 과정
다음 그림처럼 오른쪽(서버)에서 하나의 Port에 여러 connection을 맺을 수 있는 것을 알 수 있다.
처음에는 listening socket 를 통해 unique한 connection을 맺을 수 있을지 검사한다.
이후 서버에서 별도의 socket을 만들어 TCP 통신을 한다.
socket programming 에서 Socket 의미
- 프로그래밍 인터페이스
- 애플이케이션은 해당 인터페이스를 통해 데이터를 주고받음
- udp
- ip, port 쌍으로 식별함
- tcp
- connection 전, listening socket의 ip, port
- connection 후, src ip, src port, dest ip, dest port
출처