반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

패킷 교환 방식, TCP와 UDP의 차이, 흐름 제어와 혼잡제어 본문

CS/네트워크

패킷 교환 방식, TCP와 UDP의 차이, 흐름 제어와 혼잡제어

5_hyun 2022. 7. 21. 22:49

패킷 교환 방식

-데이터 패킷 교환 방식

데이터를 전송하기 전 논리적 연결이 되어 있지 않고 패킷이 독립적으로 간다.

패킷을 수신한 라우터는 최적의 경로로 패킷을 전송하는데 분할된 여러 패킷은 서로 다른 경로로 전송될 수도 있다.(비연결 지향형)

=> 이 말은 송신 측에서 전송한 순서와 도착한 순서가 다를 수도 있다. 그리고 경로 설정을 여러 번 할 수 있다.

 

-가상회선 패킷 교환 방식

데이터를 전송하기 전 논리적 연결이 설정된다.(연결 지향형)

각 패킷에 가상회선 식별 번호(VIC)가 포함되고 킷이 전송한 순서대로 도착한다. 가상회선 방식은 경로 설정을 한 번만 한다.


TCP(Transmission Control Protocol)

TCP는 인터넷상에서 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. TCP는 보통 IP와 같이 사용한다. IP가 데이터를 배달하면 TCP는 패킷을 추적, 관리한다. TCP는 주로 연결형 서비스를 지원한다. 현재 90% 이상(영상 스트리밍 포함)이 TCP를 사용한다.

 

-TCP의 특징

1. 연결지향 서비스이다. 하지만 가상 연결이라 도착지와 목적지가 논리적으로 연결됐다고 생각하는거지 실제 노드들은 모른다.

2. 3-way handshaking을 통해 연결을 설정하고 4-way handshaking을 통해 해제한다.

3. 흐름 제어 및 혼잡 제어

4. 신뢰성이 높다.

5. UDP 보단 속도가 느리다.(3-way handshaking 때문에 속도가 느리다)

6. 전이중(full-duplex), 점대점 방식: 송신을 하면서 동시에 수신도 가능하다.

 

-TCP 서버의 특징

1. 서버 소켓은 연결만 담당

2. 가상 회선 방식을 제공한다.

3. 서버와 클라이언트가 1 : 1 연결

4. 스트림 전송으로 데이터 크기가 무제한이다.

5. 패킷에 대한 응답을 해야해서 성능이 낮다.

6. 패킷이 손실되면 재전송을 요청해야 해서 스트리밍 서비스가 불리하다.

 

UDP(User Datagram Protocol)

UDP는 데이터를 데이터그램 단위로 처리하는 프로토콜이다. TCP와 달리 UDP는 비연결형 프로토콜이다. 따라서 연결할 때 할당되는 논리적인 경로가 없고 패킷이 각각 다른 경로로 전송될 수 있다. 패킷이 독립적인 관계를 가진다. TCP는 이미 너무 많이 사용되고 있어서 건들 수 없지만 UDP는 기능이 없어서 애플리케이션 위에서 내가 원하는 기능을 만들어낼 수 있다. 그렇기에 HTTP3에서 3 -Way Handshake도 줄이고자 UDP를 사용하여 UDP가 요즘 각광을 받고 있다.

 

-UDP 특징

1. 기능이 거의 없다.

2. 비연결형 서비스이며 데이터그램 방식을 사용

3. 정보를 주고 받을 때 신호절차를 거치지 않는다. 따라서 데이터 전달 보증, 순서 보장이 안된다.

4. PORT가 추가되어 있다. 이 PORT는 같은 IP에서 게임, 노래 2개의 애플리케이션이 실행중이면 응답을 어디로 줘야할지 구분해주는 것이다.

4. UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

5. 신뢰성이 낮고 애플리케이션에서 추가 작업이 필요하다.

6. TCP보다 속도가 빠르다.(신뢰성보다 연속성이 중요한 스트리밍 서비스에서 유리하다)

 

-UDP 서버의 특징

1. UDP는 연결이 없어서 connect 함수가 필요없고 서버 소켓과 클라이언트 소켓 구분이 없다.

2. 소켓 대신 IP를 기반으로 데이터 전송을 한다.

3. 서버와 클라이언트는 1 : 1, 1 : N,  N : M으로 연결될 수 있다.

4. 데이터그램 단위로 전송되고 크기가 커지면 잘라서 보낸다.

5. 흐름제어(flow control)가 없어 패킷이 잘 전송되었는지, 오류가 발생했는지 알 수 없다.

6. 신뢰성보다 성능이 중요시 되는 경우에 사용된다.

 


흐름 제어(Flow Control)와 혼잡 제어(Congestion Control)

-흐름 제어

흐름 제어는 데이터 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절해 수신자의 버퍼 오버플로우를 방지하는 것이다.

 

-혼잡 제어

혼잡 제어는 네트워크 내의 패킷 수가 넘치지 않도록 방지하는 것이다. 만약 패킷이 많아지면 혼잡 붕괴 현상이 일어날 수도 있기 때문이다.

728x90
반응형
Comments