Ch 4. TCP(2) - TCP 연결과 흐름제어


TCP 연결 설정

  • 능동적 열림(Active open)
    • 클라이언트는 서버가 열어 놓은 포트로 TCP연결을 요청
  • 수동적 열림(Passive open)
    • 서버는 네트워크 응용을 수행하기 위해 정해진 포트를 열고 클라이언트의 요청을 기다림

세 방향 핸드쉐이크(Three-way handshake)

  • 두 호스트는 TCP 연결을 위해 3개의 패킷이 송/수신되어야함
  1. 클라이언트는 서버에게 자신을 연결하라는 의미로 클라이언트 측 SEQ번호(순서번호)와 함께 SYN = 1 플래그가 저장된 세그먼트를 전송
  2. 이를 수신한 서버는 클라이언트에게 이에 대한 수락으로 ACK=1, 서버를 클라이언트에 연결하라는 의미로 SYN=1 플래그를 저장하며 클라이언트로부터 수신한 패킷의 SEQ+1를 ACK필드 값에, 서버 측의 순서번호를 SEQ필드에 저장하여 전송
  3. 서버로부터 SYN 패킷가 수신된 클라이언트는 서버에게 순서번호를 인지했다는 의미로 ACK=1플래그, ACK 필드 값은 수신한 패킷의 SEQ+1로 저장하여 전송
자세히 보기

Ch 4. TCP(1) - TCP 헤더, 타이머


TCP(Transmission Control Protocol)

  • 전송 제어 프로토콜의 약자
  • IP를 통해 확인된 목적지 주소로 데이터를 전송하는 프로토콜로서 전송 계층(4계층)의 기능을 수행
  • 두 호스트 간에 전송되는 데이터와 메시지의 형식을 정의함

TCP의 특징

  • 연결형 : IP계층 위에 가상의 회선을 설정하여 종단간 데이터 송/수신 서비스를 제공
  • 신뢰성 : 데이터 송/수신 확인을 통한 신뢰성있는 통신 서비스 제공 (ACK 필드)
  • 흐름 제어 : 송/수신측의 데이터 처리 속도 차이를 해결하기 위한 방법, 처리할 수 있는 범위 내에서 데이터를 보내도록 제어 (슬라이딩 윈도우, 슬로우 스타트)
  • 혼잡 제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 방법, 혼잡 현상을 방지하거나 제어 (혼잡 회피)
  • 스트림 통신 : 데이터를 바이트 단위로 나누어 전송(버퍼 사용)

포트(Port)

  • 호스트 내의 프로세스가 통신을 수행하기 위해 할당 받는 고유 번호
  • 데이터 링크 계층(2계층)의 MAC 주소, 네트워크 계층 (3계층)의 IP 주소와 같이 전송 계층(4계층)에서 사용하는 식별 번호
  • 포트 번호는 16비트로 이루어져 있으며 번호의 범위에 따라 사용 목적이 나뉘어져 있음
    • 0 ~ 1023번 : 잘 알려진 포트(well-known port), HTTP(80), FTP(20)와 같은 포트로 특정한 쓰임새를 위해 IANA에서 할당한 TCP, UDP포트
    • 1024 ~ 49151번: 등록된 포트(registered port), 기업이나 사업자들을 위해 IANA에서 할당한 포트
    • 49152 ~ 65535번: 동적 포트(dynamic port), 일반 사용자들이 사용할 수 있는 포트
  • 포트 번호는 IP주소 뒤에 콜론으로 표기됨 (127.0.0.1:61000)

TCP 소켓

  • TCP/IP 통신 인터페이스
  • 두 프로세스의 소켓은 프로토콜, 송신자 IP주소, 송신자 프로세스 번호, 수신자 IP 주소, 수신자 프로세스 번호로 식별
자세히 보기