-
Network - TCP/UDPCS/Network 2021. 2. 10. 19:56
TCP/UDP
TCP
-
연결형 서비스를 지원하는 전송계층 프로토콜. 신뢰할 수 있는 통신을 한다.
-
UDP에 비해 속도는 느린 편이다.
-
데이터의 순서가 보장된다.
-
TCP헤더 구성(중요한 것 위주)
-
출발지의 포트
-
목적지의 포트
-
Sequence number: TCP 세그먼트의 순서를 의미한다.
-
Acknowledgement number: 확인 응답 번호로 상대방이 보낸 세그먼트를 잘 받았다는 것을 알려주기 위한 번호. 마지막 수신 성공 번호 + 1을 해서 전달한다.
-
offset: TCP헤더의 길이.
-
flags: 제어비트. 세그먼트의 종류를 표시한다.
- checksum: 오류 검출.
-
-
3-way-handshake: TCP통신을 이용하여 데이터를 전송하기 위한 네트워크 연결을 하는 과정
-
클라이언트가 (임의의)sequence number는 10이고, SYN flag를 킨 세그먼트를 서버에 전송하여 연결을 요청한다.
-
서버는 요청을 확인하고 (임의의)sequence number는 30, acknowledgement number는 11(10 + 1)이고, SYN과 ACK flag를 킨 세그먼트를 클라이언트에게 전송한다.
-
클라이언트가 세그먼트를 확인하고 sequence number는 11, acknowledgement number는 31(30 + 1)이고, ACK flag를 킨 세그먼트를 서버에 전송한다. 서버는 세그먼트를 확인하고 연결을 완료한다.
-
-
4-way-handshake: TCP연결을 해제하는 과정
-
클라이언트가 서버에게 FIN flag를 킨 세그먼트를 전송하여 연결 해제를 요청한다.
-
서버는 sequence number에 1을 더한 응답을 ack number에 담고 ACK flag를 보낸 후 데이터를 모두 전송할때 까지 기다린다.
-
데이터를 모두 전송하여 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN flag를 보낸다.
-
클라이언는 FIN 세그먼트를 확인했다는 ACK을 보낸다.
-
서버는 클라이언트의 ACK 세그먼트를 확인하고 연결을 닫는다.
-
-
혼잡 제어와 흐름 제어를 제공한다.
-
연속성 보다 신뢰성이 중요한 서비스 에서 사용한다. ex)파일 전송
UDP
-
비연결형 서비스를 지원하는 전송계층 프로토콜. 신뢰할 수 없는 통신을 한다.
-
속도가 빠르다.
-
클라이언트에서 timeout이 발생하면 다시 보낸다.
-
UDP헤더 구성
-
출발지의 포트
-
목적지의 포트
-
전체 헤더의 크기
-
checksum
-
-
소켓 대신 IP를 사용해 통신한다.
-
신뢰성 보다 영속성이 중요한 서비스에서 사용한다. ex) 실시간 서비스
흐름제어
-
데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것이다.
-
송신한 곳에서 감당이 안되게 데이터를 빠르게 많이 보내면 수신자 에서 문제가 발생한다.
혼잡제어
-
네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것이다.
-
정보의 소통량이 과다하면 패킷을 조금만 전송해 혼잡 붕괴 현상이 일어나는 것을 막는다.
MTU
-
OSI, TCP/IP 계층 구조에서 각 레이어가 한 패킷으로 전송할 수 있는 최대 데이터 단위의 크기이다.
-
MTU를 높게 설정한다면, 패킷을 덜 쪼개도 되기 때문에 전송 속도는 더 빨라진다. 그러나 전송 오류로 재전송을 하게 되면 그 만큼 시간이 더 걸릴 수 있다. UDP에서는 MTU를 높게 잡는다.
-
MTU를 낮게 설정한다면, 패킷을 다량으로 쪼개 전송해야 하기 때문에 전송 속도가 떨어진다. 그러나 전송 오류시 오류가 발생한 패킷만 재전송하면 되기 때문에 상대적으로 안전하다. TCP에서는 MTU를 낮게 잡아 신뢰성 있는 통신을 한다.
-
데이터 손상이 없고 빠르게 전달할 수 있는 적절한 MTU값을 찾아 사용하는 것이 가장 이상적이다.
reference
'CS > Network' 카테고리의 다른 글
Network - NAT (0) 2021.02.16 Network - 캐시/쿠키/세션 (0) 2021.02.10 Network - HTTP (0) 2021.02.10 Network - DNS (0) 2021.02.10 Network - OSI 7계층, TCP/IP 4계층 (0) 2021.02.10 -