dev-hamster
TCP는 어떻게 신뢰성을 보장할까 본문
TCP/IP 프로토콜은 컴퓨터간 데이터 통신에 일반적으로 사용되는 사실 표준 프로토콜입니다. 컴퓨터간의 통신은 TCP/IP 프로토콜를 사용하고 있습니다. TCP/IP 계층은 이렇게 구성되어 있습니다.
| 응용 계층 | 데이터 생성 예) HTTP 데이터 |
| 전송 계층 | 어플리케이션 포트 번호에 전송 |
| 인터넷 계층 | 그룹화된 주소인 IP로 전송 |
| 네트워크 엑세스 계층 | MAC 주소로 전송 |
전송계층
애플리케이션간의 신뢰성 있는 데이터 전송을 담당합니다.
- 역할: 에러복구, 흐름제어
TCP 커넥션 연결
TCP는 양방향 데이터 전송 방식입니다.
3-way handshake로 연결의 신뢰성을 확보합니다.

TCP 헤더
| Seq number | ||||||||
| Ack number | ||||||||
| ACK | SYN | FIN | Window Size | |||||
| Checksum | ||||||||
- Seq number: 바이트 단위로 순서화 되는 번호, TCP 세그먼트의 연속된 데이터 번호
- Ack number: 다음에 전송 받아야하는 TCP 세그먼트 번호, Seq number + 1
- ACK: 승인비트, 응답에 사용
- SYN: 동기화 비트, 상대방과의 연결을 시작시 사용
- FIN: 연결 종료
- Window Size: 한번에 전송할 수 있는 최대 프레임 크기
- Checksum: 데이터 에러검출
에러복구
인터넷에 의해 손상, 유실 또는 중복되었거나 올바르지 않은 순서로 전달된 데이터를 복구해야 합니다.
수신하는 TCP의 ACK 응답으로 데이터가 올바르게 전달됐는지 확인합니다. 특정 시간내에 ACK가 수신되지 않으면 데이터를 재전송하여 데이터의 손상, 유실을 복구합니다.
수신기에서 Seq number를 통해 세그먼트의 순서가 올바른지 확인하여 중복을 제거합니다.
수신기에서 Checksum을 이용해 오류를 검출합니다.
흐름제어
Window Size를 전달해 전송받을 데이터 양을 조절합니다.
수신자는 매 ACK와 함께 허용 가능한 순번 범위를 나타내는 Window Size를 전달합니다.
'로그' 카테고리의 다른 글
| 인터럽트 (0) | 2023.05.16 |
|---|---|
| 프로세스와 스레드 (0) | 2023.05.02 |
| 얕은 복사와 깊은 복사 with 자바스크립트 (0) | 2023.04.17 |
| 브라우저의 History API (0) | 2023.04.11 |
| 파일 전송을 하려면 어떻게 해야할까 (0) | 2023.03.07 |