[ 네트워크 network ] TCP 와 UDP의 차이점
차이점
| 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을 설정한다.
'CS > Computer Network' 카테고리의 다른 글
| [ 네트워크 network ] HTTP 와 HTTPS의 차이점 (0) | 2021.03.25 |
|---|---|
| [ 네트워크 network ] OSI 7계층 각 계층 비교 (0) | 2021.03.22 |
댓글