TCP(Transmission Control Protocol)
연결형 서비스
- 3-way handshaking 으로 연결, 4-way handshaking 으로 해제
데이터 전달 보증
- 패킷 단위 전송 (데이터를 잘게 조개서 전송한다)
- 3-way handshaking 중 전달하는 시퀀스 넘버, ACK로 각각 순서보장, 누락방지를 보증한다.
- 패킷의 총량을 ACK 응답으로 확인하고 누락된 데이터가 있으면 시퀀스 넘버로 순서를 확인, 해당 SEQ부터 재전송한다.
- 모든 패킷 전송에는 ACK로 응답한다.
- 패킷을 전송하면 어떤 패킷부터 도착할 지 모르지만 패킷에 시퀀스 넘버로 순서를 재정렬할 수 있다.
패킷이란?
전송하는 포트, 받는 포트, 전송하는 ip, 받는 ip 등 TCP/IP 4계층을 통과하는 동안 만들어진 택배박스(정보의 모음)
흐름 제어, 혼잡 제어
- 흐름 제어: 보내는 측과 받는 측의 데이터 처리 속도 차이를 조절해주는 것
- 혼잡 제어: 네트워크 내의 패킷 수가 과도하게 증가하지 않도록 방지하는 것 (네트워크 속도 조절)
3-way handshaking
말 그대로 3번의 악수(통신)를 통해 연결을 시작하는 것이다.
- 클라이언트는 서버에 연결을 요청하는 SYN 패킷을 보낸다. 클라이언트는 SYN을 보내고 난 후 SYN-SENT 상태가 된다. ACK를 기다리는 상태이다.
- 서버는 클라이언트에게서 SYN을 받고 수락의 ACK과 자신만의 SYN(연결요청)을 보낸다. SYN-RECEIVED 상태가 된다.
- 클라이언트가 마지막으로 서버에서 받은 SYN에 대한 ACK 패킷을 보내면 연결이 성사된다. 클라이언트와 서버 모두 ESTABILISHED 상태가 된다.
이 모든 과정이 끝나야 비로소 데이터를 주고받는 전송이 시작되기에 TCP가 상대적으로 느린 것이다.
4-way handshaking
마찬가지로 말 그대로 4번의 악수(통신)을 통해 연결을 종료하는 과정이다.
- ESTABILISHED 상태인 클라이언트가 먼저 FIN 플래그를 서버로 보낸다. FIN-WAIT 상태로 바꾼다.
- 서버는 확인했다는 플래그인 ACK를 보내고 기존에 요청했던 내역을 다 받을 때까지 기다린다. CLOSE-WAIT 상태이다. 이때 클라이언트는 서버의 FIN을 기다리며 FIN-WAIT를 이어간다.
- 서버는 통신이 끝나면 클라이언트에 FIN 플래그를 보내고 자신의 상태를 LAST-ACK로 바꾼다.
- 서버에서 FIN을 받고나면 ACK를 보내고 MSL시간(디폴트 240초)만큼 기다린다.
- 이 이유는 통신이 끝났다고 해도 서버 측에서 FIN 패킷을 보내기 전에 보낸 오류 내용 패킷(잉여 패킷이나 지연에 대한 유실)이 발생할 수 있어 완전히 닫지 않고 기다리는 것이다.
- 패킷의 전송 순서는 알 수 없기에 FIN보다 오류 내용 패킷이 늦게 도착할 수도 있는 것이다.
TCP는 신뢰성 있는 데이터 전송이 중요할 때에 사용하는 프로토콜이다.
신뢰성 보장과 관련된 여러 기능때문에 UDP보다 속도가 느리다.
예로는 파일 전송이 있다.
UDP(User Datagram Protocol)
비연결형 서비스
- 3-way handshaking 같은 과정이 없음.
데이터 전달 보증 X
- 데이터그램 단위로 전송한다. (잘게 쪼개지 않고 퉁으로 전송)
- CheckSum 필드를 통해 최소한의 오류만 검출한다. -> 신뢰성이 낮다.
- 속도가 빠르다.
UDP는 성능이 중요한 데이터 전송에 사용하는 프로토콜이다.
예로는 스트리밍이 있다.
TCP 와 UDP 의 차이
프로토콜 종류 | TCP | UDP |
전송 단위 | 패킷 | 데이터그램 |
전송 순서 | 보장 | 비보장 |
연결 확인 | 연결 확인함 | 연결 확인 안함. 요청 후엔 일방통행 |
수신 여부 | 확인 (데이터 재전송) | 비확인 (데이터 재전송 X) |
통신 방식 | 1:1 (Unicast) | 1:1 / 1:N (Broadcast) / N:N (Multicast) |
속도 | 느림 | 빠름 |
많은 블로그에서 TCP는 패킷 교환 방식, UDP는 데이터그램 교환 방식이라고 쓰여있는데
(심지어 가상 회선 방식이라고 되어 있는 곳도 있었다.)
데이터그램 교환 방식은 패킷 교환 방식의 종류이다...
둘이 왜 저런 방식으로 구분되어 있는지 도무지 모르겠어서 패킷 교환 방식에 대한 정의로 마치겠다.
++) 블로그들에서는 전송 방식에 대해 이야기했었는데 공부를 해보니 전송 단위가 다른 것이었다.
이에 상단 표에 내용을 추가한다.
TCP는 연결, 순서 보장 등의 특징이 있어 데이터를 잘게 쪼개서 보내도 되지만
UDP는 비연결, 순서 비보장이기에 데이터를 쪼개지 않고 보낸다.
패킷 교환 방식?
미리 고정된 이동 경로를 설정하지 않는 대신 데이터를 패킷이라는 작은 단위로 나누어 전송하는 방식
라우팅을 수행해야 한다는 특징이 있다.
라우팅:
수신지 호스트까지 가는 다양한 경로 중 당시 가장 좋다고 판단되는 노드(라우터)로 패킷을 이동시키는 기능
'Computer Science > Network' 카테고리의 다른 글
www.google.com 이 뜨는 과정 (0) | 2023.07.11 |
---|---|
네트워크 - GET 과 POST 의 차이점 (0) | 2023.07.10 |
UDP 헤더 (0) | 2022.08.09 |
컴퓨터 네트워크 2강 정리 (0) | 2022.08.02 |
컴퓨터 네트워크 1강 정리 (0) | 2022.08.02 |