TCP 송수신 과정(1)

|

TCP/IP의 통신 과정 (1)

대략적인 네트워크 계층구조

  • 애플리케이션 레이어
    • 애플리케이션 레이어에는 웹 브라우저, 메일러, 웹 서버, 메일 서버 등이 존재한다.
    • Socket 라이브러리가 존재하여 DNS 서버를 조회하거나 소켓을 만드는 일 등을 한다.
  • OS 레이어
    • 프로토콜 스택이 존재하며, 프로토콜 스택은 TCP, UDP, IP 프로토콜을 포함한다.
    • TCP 프로토콜
      • 브라우저나 메일 등의 일반적인 애플리케이션이 데이터를 송∙수신할 경우에 사용한다
    • UDP 프로토콜
      • DNS 서버에 대한 조회 등에서 짧은 제어용 데이터를 송∙수신 하는 경우에 사용한다.
    • IP 프로토콜
      • 패킷[1]의 송∙수신 동작을 제어한다.
      • ICMP 프로토콜과 ARP 프로토콜이 존재한다.
        • ICMP 프로토콜 : 패킷을 운반할 때 발생하는 오류를 통지하거나 제어용 메시지를 통지할 때 사용한다.
        • ARP 프로토콜 : IP 주소에 대응하는 이더넷의 MAC 주소를 조사할 때 사용한다.

소켓이란

  • 프로토콜 스택 내부에 제어 정보를 기록하는 메모리 영역을 가지고 있다. 이것을 소켓이라 부른다.
  • 통신 상대의 IP 주소, 포트번호, 통신의 진행상황 등이 기록되어 있다.
  • 프로토콜 스택은 이 소켓에 저장된 정보를 참조하면서 동작한다.

  • command line에서 netstat 명령어로 소켓 상태를 확인할 수 있다.

TCP/IP 통신 과정

  • 요청하기 전에 DNS서버의 IP주소를 알아야 하므로 사진의 ‘gethostbyname’을 호출하여 DNS 서버정보를 먼저 알아낸다. (UDP 프로토콜을 이용한다)

  • ① 준비

    • 소켓을 만드는 단계, 메모리영역을 확보한다.
    • 소켓을 나타내는 디스크립터를 반환한다.
  • ② 접속

    • 소켓을 만든 직후에는 아무 것도 기록되어 있지 않으므로 통신 상대가 누구인지 모른다.

    • 서버의 IP주소나 포트번호를 프로토콜 스택에 알리는 동작이 필요하다.

    • 접속 동작의 첫 번째 동작은 통신 상대와 제어 정보[2]를 주고받아 소켓에 필요한 정보를 기록하고 데이터 송∙수신이 가능한 상태로 만드는 것이다. 패킷에 제어정보를 추가하면 그 제어정보가 헤더가 된다.

    • 두 번째 동작은 데이터 송∙수신 동작을 실행할때 데이터를 일시적으로 저장하는 ‘버퍼 메모리’ 영역을 확보하는 것이다.

    • 대화를 주고받는 과정을 간단히 살펴보면

      1. 클라이언트에서 컨트롤 비트인 SYN 이라는 비트를 1로 만들어 송신하고
      1. 패킷을 받은 서버는 ACK 라는 컨트롤 비트를 1로 만들어 응답한다.[3]
      2. 응답을 받은 클라이언트는 TCP 헤더를 조사하여 SYN=1이면 접속 성공이므로 소켓에 서버 IP주소, 포트 번호 등과 함께 소켓에 접속 완료를 나타내는 제어 정보를 기록한다.
      3. 패킷이 도착한 것을 알리기 위해 ACK 비트를 1로 만든 TCP 헤더를 서버에 반송한다.
      4. 이 것이 서버에 도착하면 접속 동작의 대화가 끝난다.

[1] 패킷

  • 네트워크에서 데이터는 수십 바이트에서 수천 바이트 정도의 작은 덩어리로 분할되어 운반된다.

    이렇게 분할된 데이터의 덩어리를 ‘패킷’이라고 부른다.

[2] 제어 정보

  • 데이터 송∙수신 동작을 제어하기 위한 정보로, IP 주소나 포트번호가 대표적인 예이다.

  • 클라이언트와 서버가 서로 연락을 절충하기 위해 주고 받는 제어정보(헤더)[사진1]

    소켓에 기록하여 프로토콜 스택의 동작을 제어하기 위한 정보가 있다.

[사진1]

[3] SYN

  • 연결의 시작을 요청하는 플래그
  • TCP 3-way handshake
    1. [Client -> Server] SYN [000010]
    2. [Server -> Client] SYN/ACK [010010]
    3. [Client -> Server] ACK [010000]

ref 성공과 실패를 결정하는 1% 네트워크 원리