UDP
- 비연결적 프로토콜, 연결과 연결 종료가 없다. (3 way Handshake 같은거 안함)
- 데이터 순서가 중간에 바뀐다고 해도 정렬 X
- 소켓을 활용해 IP와 PORT를 기반으로 데이터를 전송
- 헤더가 작아서 오버헤드 적음
- Source port : 시작 포트
- Destination port : 도착지 포트
- Length : 길이
- Checksum : 오류 검출 → 데이터가 중간에 손상되지 않았는지 확인하는 데 사용
장점
- 연결하지 않고 보내니까 빠르다
- 오버 헤드가 적음
- 1:1, 1:N, N:N 통신이 가능
단점
- 신뢰성이 낮다 (패킷 손실되어도 재전송 x, 패킷 순서 보장 x)
신뢰적 데이터 전송
전송 후 대기 프로토콜
- 데이터를 전송 후 수신자로부터 ACK를 받을때 까지 대기하는 방식
파이프라인 프로토콜
- 요청에 대한 응답을 기다리지 않고, 다음 요청을 송신하는 기능
- 한계 : 요청과 응답의 교환을 병렬 처리할 수 없기 때문에 서버는 요청을 받은 순서대로 응답을 반환해야 함
Go Back N
- 패킷을 전송할 때 수신측에서 데이터를 잘못 받거나 못 받을 경우 그 패킷 번호부터 다시 재전송
- 구현이 단순 하지만 멀쩡한 데이터도 폐기 하기 때문에 비효율
Selective Repeat
- 잘못받은 패킷 번호만 다시 재전송
- 프레임 재배열과 같은 추가 로직 필요 하지만 멀쩡한 데이터 사용 가능
TCP
- 애플리케이션 사이에서 안전하게 데이터를 통신하는 규약
- 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜
- 흐름 제어 : 수신자의 처리 속도에 맞춰 송신자가 전송량을 조절 (송신자 ↔ 수신자 간)
- 혼잡 제어 : 네트워크가 과부하되지 않게 전송량을 조절 (송신자 ↔ 네트워크 전체)
- 순서를 보장
TCP 헤더
- Sequence Number: 현재 보내는 바이트의 순서
- ACK Number: 다음에 기대하는 바이트 번호
- Flags: SYN, ACK, FIN, RST, PSH, URG 등
- Window Size: 흐름 제어용, 서버가 현재 수신 가능한 버퍼 크기
- Checksum: 에러 검사
3 way hand shake : 연결 시작
- 클라이언트 - 서버가 연결을 시작할때 하는 통신
1. 클라이언트 → 서버: SYN (요청)
2. 서버 → 클라이언트: SYN + ACK (응답 + 요청)
3. 클라이언트 → 서버: ACK (응답)
→ 이 과정을 거쳐 연결을 확립함.
4 way hand shake : 연결 종료
- 클라이언트 - 서버가 연결을 종료할때 하는 통신
1. FIN: 종료 요청
2. ACK: 확인
3. FIN: 상대방도 종료
4. ACK: 종료 확인
TCP 빠른 재전송
- 중복된 ACK이 일정 횟수(3회) 이상 오면 손실로 판단하고 즉시 재전송
- 수신자는 중복 ACK으로 손실 알림
출처
https://docs.tosspayments.com/resources/glossary/tcp
'네트워크' 카테고리의 다른 글
[네트워크] REST, JWT, 보안 개념, 프록시 (0) | 2025.03.28 |
---|---|
[네트워크] HTTP, HTTPS, DNS (0) | 2025.03.20 |
[네트워크] 컴퓨터 네트워크와 계층적 구조 (0) | 2025.03.18 |