목차
· Transpost Layer
· TCP(Transfer Control Protocol)
- 세그먼트
- TCP Header
- TCP의 3-way handshake 절차(Connection 연결)
- TCP의 4 way-hansdsake 절차(Connection close)
- TCP의 문제점
· UDP(User Datagram Protocol)
- User Datagram
- UDP Header
- UDP의 데이터 전송 방식
· TCP, UDP를 공부하는 이유
· TCP vs UDP: 요약
Transpost Layer
· End Point간 신뢰성있는 데이터 전송을 담당하는 계층이다.
- 신뢰성: 데이터의 순차적, 안정적인 전달
- 전송: 포트 번호에 해당하는 프로세스에 데이터를 전달
· TCP와 UDP는 OSI 7 계층 중 전송 계층(Transport Layer)에 속하는 프로토콜이다.
- 두 프로코톨을서로 다른 특성을 가지고 있기 때문에, 이것을 잘 이해해야 상황에 따라 적절한 프로토콜을 사용할 수 있다.
TCP(Transfer Control Protocol)
· 신뢰성있는 데이터 통신을 가능하게 해주는 프로토콜
· Connection(3 way-handshake) - 양방향 통신
· 데이터의 순차 전송 보장
· Flow Control (흐름 제어)
· Congestion Control (혼잡 제어)
· Error Detection (오류 감지)
세그먼트
· TCP의 PDU(Protocol Data Unit, 데이터의 전송 단위)
· 데이터가 전송될때, TCP 프로토콜 내부적으로 데이터를 자른 후 TCP 헤더를 추가한다. 이것을 세그먼트라 한다.
TCP Header
· 포트 번호: 특정 네트워크 서비스 또는 프로세스를 식별하는 논리 단위로 사용
· Sequence number: 순차 전송 보장
· 9개의 flag 필드 : TCP 연결 제어 및 데이터 관리
TCP의 3-way handshake 절차(Connection 연결)
1. SYN(신) 비트를 1로 선정해 패킷 송신
2. SYN, ACK(애크)비트를 1로 설정해 패킷 송신
3. ACK 비트를 1로 설정해 패킷 송신
TCP 데이터 전송 절차
1. Client가 패킷 송신
2. Server에서 ACK 송신
3. ACK를 수신하지 못하면 재전송
TCP의 4 way-hansdsake 절차(Connection close)
1. 데이터를 전부 송신한 Client가 FIN을 1로 설정하고, 송신
2. Server가 ACK를 1로 설정하고, 송신
3-1. Server에서 남은 패킷 송신 (일정 시간 대기)
3-2. Server가 FIN을 1로 설정하고, 송신
4. Client가 ACK를 1로 설정하고, 송신
TCP의 문제점
· 매번 Connection을 연결해서 시간 손실 발생 (3 way-handshake)
· 서비스에 지장이 없을 만큼 패킷을 조금만 손실해도(예: 이미지의 아주 작은 부분) 재전송
UDP(User Datagram Protocol)
· TCP보다 신뢰성이 떨어지지만 전송 속도가 일반적으로 빠른 프로토콜
· 순차 전송 x, 흐름 제어 x, 혼잡 제어 x
· Connectionless
·비교적 데이터의 신뢰성이 중요하지 않을 때 사용 ex) 영상 스트리밍
User Datagram
· User의 PDU(Protocol Data Unit, 데이터의 전송 단위)
- TCP와 다르게 데이터를 나누지 않으므로, 유저 어플리케이션 부분에서 직접 나누어야 한다.
UDP Header
UDP의 데이터 전송 방식
1. Client가 패킷 송신
- 오류 검출이 없으므로 데이터가 오지 않을 수도 있다.
TCP, UDP를 공부하는 이유
· TCP, UDP의 특성을 파악하고 상황에 따라 적절한 프로토콜을 사용할 수 있다.
· TCP, UDP 헤더에 대해 파악하고 성능 개선에 이용할 수 있다.
TCP vs UDP: 요약
TCP | UDP | |
연결 방식 | 연결성 서비스 | 비연결형 서비스 |
패킷 교환 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 보장 | 보장함 | 보장하지 않음 |
신뢰성 | 높음 | 낮음 |
전송 속도 | 느림 | 빠름 |
출처
'네트워크' 카테고리의 다른 글
HTTP 0.9 , HTTP 1.0, HTTP/1.1, HTTP/2의 차이점 (0) | 2022.01.23 |
---|---|
[Network] 다양한 종류의 로드밸런서(Load Balancing)와 다양한 로드밸런싱 알고리즘 (0) | 2021.11.29 |
분산 서버 환경에서 세션 공유 문제 해결하기 (0) | 2021.11.29 |
REST란? REST API란? 일반적인 HTTP API가 REST API가 아닌 이유 (0) | 2021.11.10 |
[Chrome] Chrome 브라우저 NET :: ERR_CERT_INVALID (인증서)문제 해결 (0) | 2020.11.12 |
댓글