728x90
- 소켓과 포트가 속하는 위치는?
- process와 port가 1대1 반드시 구조여야 하는 것은 아니다.
- Port name으로 식별한다.(OS마다 다른 방식으로 port에 name을 부여한다)
- TCP/IP의 Internet 계층의 Internet Protocol(IP)를 이용하여 데이터를 전달하게 되는 데 프로세스간 이 때, IP는 unreliable(신뢰할 수 없는)하다는 특성을 지니고 있다.
- Data loss와 out-of-order 위험이 있으므로 그 위에서 동작하는 Application(Process)간, 즉 transport 계층의 통신에 신뢰성을 부여해야 한다. => TCP 개념 등장
- TCP; Transmission Control Protocol
- 프로세스 사이에서 데이터를 안정적으로 주고받도록 함.
- TCP 에서의 Connection이란 프로세스 간 안정적이고 논리적인 통신 통로를 의미한다.
- 3-way handshake로 초기화(initialization)을 통해 데이터를 주고 받을 수 있는 환경인 Connection을 연다.
- 4-way handshake로 Connection을 닫는다.
- 이런 방식을 Connection-oriented 라고 부른다.
- 그렇다면 Connection을 구축하기 위해 인터넷 상에서 어떻게 port를 식별하는가?
- port number(port라고도 부름)를 정의 : 16bit(0~65535)
- port number만으로는 부족 => Internet Address(IP)와 port number로 인터넷 상에서 각 포트를 식별할 수 있음 => 이를 Socket이라고 부름
- 즉, Socket은 각 포트를 유일하게 식별하기 위해 나온 개념이므로 Socket은 인터넷 상에서 unique해야 함.
- TCP 표준에서는 한 쌍의 Socket으로 Connection을 유일하게 식별할 수 있다.
- source의 IP address, port number
- destination의 IP address, port number
- 이렇게 4가지로 Connection을 유일하게 식별 가능.
- 하나의 소켓은 여러 개의 연결에 사용될 수 있다. (서버의 경우 소수의 socket으로 여러 클라이언트의 connection을 상대해야 할 것이다.
- UDP : User Datagram Protocol
- Connection 없이 데이터를 주고 받음. 즉, Connectionless
- Internet Protocol을 거의 그대로 사용하여 unreliable함. 그래서 UDP 공식문서에는 Socket이란 단어는 나오지 않지만 UDP에서도 Socket의 개념을 사용함(목적지 소켓이 있어야 하므로)
- TCP, UDP 통틀어서 Socket을 구별하기 위해서는 Protocol, IP address, Port number 3가지로 구성된다.
- 위 TCP 설명에선 Socket을 IP와 Port number의 조합이라고 했지만 UDP를 포함한 개념에서는 Socket을 3가지 조건으로 식별해야 한다.
- process A, B는 프로토콜이 다르므로 서로 다른 socket에 연결되어 있는 것이다.
- 각각의 Connection은 서로 다른 조합의 Socket 한 쌍을 가지므로 유일하게 식별 가능하다.
- 위 내용들은 모두 표준에 관한 내용이기 때문에 실제 구현의 세계에서는 소켓의 개념이 좀 다르게 쓰인다고 함.
728x90
'Computer Science > Network' 카테고리의 다른 글
네트워크 기초 6. TCP/IP Stack 기준 설명 (0) | 2024.12.16 |
---|---|
네트워크 기초 5. 실제 구현에서의 소켓 (1) | 2024.12.10 |
네트워크 기초 3. WWW(World Wide Web) (2) | 2024.12.09 |
네트워크 기초 2. 프로토콜(Protocol)과 OSI 7계층 (0) | 2024.12.09 |
네트워크 기초 1. 네트워크와 인터넷 개념 (3) | 2024.12.08 |