본문 바로가기

[ 네트워크 network ] TCP 와 UDP의 차이점

곰곰킴 2021. 3. 24.

 

 

차이점

 

  TCP UDP
메시지 형태 세그먼트 단위 데이터그램(패킷) 단위
서비스 형태 연결형 서비스
연결 : 3-way handshaking
해제 : 4-way handshaking
비연결형 서비스
제어 흐름제어 / 혼잡제어 X
신뢰도 높은 신뢰성 낮은 신뢰성
속도 보다 느린 속도 보다 빠른 속도
  전송 양방향 가능 신뢰성보다는 연속성이 중요한 서비스에 사용됨
ex. 스트리밍 서비스
  Point to Point  
  IP와 함께 사용됨
IP : 배달 처리
TCP : 패킷 추적 및 관리
 

 

 

TCP의 헤더

 

 

 

필드 내용 크기(bits)
Source Port, Destination Port TCP로 연결되는 가상 회선 양단의 송수신 프로세스에 할당되는 포트 주소 16
Sequence Number 송신자가 지정하는 순서 번호, 전송되는 바이트 수 기준으로 증가
SYN = 1 : 초기 시퀀스 번호. ACK 번호는 이 값에 + 1
32
Acknowledgment(ACK) Number 수신 프로세스가 제대로 수신한 바이트의 수 응답 용 32
Header Length(Data Offset) TCP 헤더 길이를 4바이트 단위로 표시(최소 20, 최대 60 바이트) 4
Resv(Reserved) 나중을 위해 0으로 채워진 예약 필드 6
Flag Bit SYN, ACK, FIN 등 제어 번호 6
Window Size 수신 윈도우의 버퍼 크기 지정(0이면 송신 중지)
상대방의 확인 없이 전송 가능한 최대 바이트 수
16
TCP Checksum 헤더와 데이터의 에러 확인 용도 16
Urgent Pointer(긴급 위치) 현재 순서 번호부터 표시된 바이트까지 긴급한 데이터임을 표시, URG 플래그 비트가 지정된 경우에만 유효 16
Options 추가 옵션 있을 경우 표시 0~

 

 

 

참고사항

  • UDP와 TCP는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방하다. 즉, 두 프로토콜에서 동일한 포트 번호를 할당해도 서로 다른 포트로 간주한다.
  • 또한 같은 모듈(UDP or TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우에는 서로 다른 포트 번호를 동적으로 할당한다. (동적 할당에 사용되는 포트번호는 49,152~65,535이다.)

 

 

TCP 관련 질문

 

질문 1

  • Q. TCP의 연결 설정 과정(3단계)과 연결 종료 과정(4단계)이 단계가 차이나는 이유?
    • A. Client가 데이터 전송을 마쳤다고 하더라도 Server는 아직 보낼 데이터가 남아있을 수 있기 때문에 일단 FIN에 대한 ACK만 보내고, 데이터를 모두 전송한 후에 자신도 FIN 메시지를 보내기 때문이다.

 

질문 2

  • Q. 만약 Server에서 FIN 플래그를 전송하기 전에 전송한 패킷이 Routing 지연이나 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황이 발생하면 어떻게 될까?
    • A. 이러한 현상에 대비하여 Client는 Server로부터 FIN 플래그를 수신하더라도 일정 시간(Default: 240 sec) 동안 세션을 남겨 놓고 잉여 패킷을 기다리는 과정을 거친다. (TIME_WAIT 과정)

 

질문 3

  • Q. 초기 Sequence Number인 ISN을 0부터 시작하지 않고 난수를 생성해서 설정하는 이유?
    • A. Connection을 맺을 때 사용하는 포트(Port)는 유한 범위 내에서 사용하고 시간이 지남에 따라 재사용된다. 따라서 두 통신 호스트가 과거에 사용된 포트 번호 쌍을 사용하는 가능성이 존재한다. 서버 측에서는 패킷의 SYN을 보고 패킷을 구분하게 되는데 난수가 아닌 순차적인 Number가 전송된다면 이전의 Connection으로부터 오는 패킷으로 인식할 수 있다. 이런 문제가 발생할 가능성을 줄이기 위해서 난수로 ISN을 설정한다.

댓글