본문 바로가기

Computer Science/Network

네트워크 기초 4. 소켓, 포트, TCP

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