소켓에 기록된 애플리케이션 데이터는 커널 내에서 통신 대상에게 전달하기 위한 준비를 시작한다. 제일 먼저 임무를 수행하는 것이 전송 계층 프로토콜인 TCP다.
TCP (Transmission Control Protocol)는 명칭 그대로 전송을 제어하는 프로토콜로, 신뢰도가 높은 데이터 전송을 가능케 한다.
TCP의 역할
- 애플리케이션이 보낸 데이터를 그 형태 그대로 상대방에게 확실하게 전달하는 것이다.
- TCP가 담당하는 것은 어디까지나 서버가 송신할 때와 서버가 수신한 후 애플리케이션에게 전달할 때로, 상대 서버까지 전송하는 부분은 하위 계층인 IP에 모두 위임한다.
- TCP에 의존하지 않고 IP만으로도 통신할 수 있지만, IP에는 데이터가 상대방에게 확실히 전달됐는지 확인하는 기능이나 도착한 순서를 확인하는 기능 등이 없다. ⭐️
e.g. 우편으로 100장의 자료를 상대방에게 보낸다고 가정
100장 전부를 봉투 하나에 담을 수 없음 🙅♀️
송신자: 10장씩 나누어 10개의 봉투에 넣어서 보내기로 함
수신자: 이걸 어떤 식으로 받게 될까?
상황 가정
10개 중 9개의 봉투만 받을 수도 있음
전부 도착했는지나 도착하지 않은 자료가 어떤 것인지 확인할 수 없음
or 봉투 순서도 제 각각이어서 자료의 원래 순서도 알 수 없게됨
이와 같이 전송한 데이터를 그 형태 그대로 전달하기 위해서는 IP 기능만으로는 어렵다
TCP는 이것을 모두 자동으로 해주기 때문에 통신 프로그램을 만들 때 프로그래머가 확인 기능을 열심히 만들어 둘 필요가 없음 🙅♀️
e.g. 우편물 발송에 비유
100장의 자료를 그대로 우체국에 전달하기만 하면 알아서 봉투를 나누어 넣어줌
& 상대방에게 모든 봉투가 전달됐는지도 확인해 준다.
+ 100장의 자료를 그 순서 그대로 유지한 상태로 상대방에게 전달해준다 👍👍
TCP 중요한 기능(서비스)
- 포트 번호를 이용해서 데이터 전송
- 연결 생성
- 데이터 보증과 재전송 제어
- 흐름 제어와 폭주 제어
폭주 제어란? 네트워크상에서 접속 폭주(한 곳에 집중되는 것)를 방지하는 것
출처: 그림으로 공부하는 IT인프라 구조
'Computer Science > Network' 카테고리의 다른 글
DHCP란? (0) | 2022.11.13 |
---|---|
Subnet이란? (0) | 2022.11.12 |
IP란? (0) | 2022.11.11 |
라우팅이란? (0) | 2022.11.11 |
macOS 네트워크 키워드 정리 (0) | 2022.11.11 |