TCP/UDP 란
- 전송계층(Layer 3)에서 사용하는 프로토콜
* 전송 계층: 송신자와 수신자 연결하는 통신 서비스
, 데이터 전달
담당
패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP 프로토콜 기반으로 구현됨
TCP (Transmission Control Protocol)
1. 데이터 경계를 구분하지 않음: 바이트 스트림 (byte-stream) 서비스
2. 연결 지향 프로토콜(수신여부 확인O) -> 신뢰도 높지만 속도 느림
3. 1:1 통신
4. 가상회선 패킷 교환방식 사용: 패킷 사이 순서 보장
5. HTTP, Email, File transfer
가상회선 패킷 교환방식
- 각 패킷에는 가상회선 식별자가 포함
- 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착
UDP (User Datagram Protocol)
1. 데이터 경계를 구분: 데이터그램(datagram) 서비스
2. 비 연결 지향 프로토콜(수신여부 확인X) -> 신뢰도 낮지만 속도가 빠름
3. 1:1 or 1:N or N:N 통신
4. 단순히 데이터만 주는 데이터그램 패킷 교환 방식 사용: 순서 보장 X
5. DNS, Broadcasting
데이터그램 패킷 교환 방식
- 각 패킷이 독립적으로 이동하며 최적의 경로 선택
- 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음
- 도착순서가 다를 수 있음
TCP 통신
- 네트워크 통신에서 신뢰적인 연결방식
- TCP는 기본적으로 unreliable network에서 reliable network를 보장할 수 있도록 하는 프로토콜
- TCP는 network congestion avoidance algorithm을 사용
reliable network를 보장한다는 것은 4가지 문제점 존재
- 손실: packet 손실 문제
- 순서 바뀜: packet 순서 바뀜 문제
- Congestion: 네트워크 혼잡 문제
- Overload : receiver가 overload 되는 문제
흐름제어/혼잡제어
전송의 전체 과정
- Application layer: sender application layer 가 socket 에 data를 씀
- Transport layer: data를 segment에 감싼다. 그리고 network layer에 넘겨줌
- receiving node로 전송: 이 때 sender의 send buffer에 data 저장, receiver는 receive buffer에 data 저장
- application에서 준비가 되면 이 buffer에 있는 것을 읽기 시작
- 따라서 flow control의 핵심은 이 receiver buffer가 넘치지 않게 하는 것
receiver는 RWND(Receive WiNDow): receive buffer의 남은 공간 홍보
1. 흐름제어 (Flow Control)
- 송신측(receiver)이 수신측(sender)보다 속도가 빠를 경우
- 수신측: 제한된 저장 용량 초과 후에 도착하는 데이터 손실 가능성
- 송신 측의 데이터 전송량을 수신 측에 따라 조절
해결
- Stop and Wait: 매번 전송한 패킷에 대해 확인 응답
- Sliding Window (Go Back N ARQ)
- 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법
- Window: TCP/IP를 사용하는 모든 호스트들은 송신 Window/수신 Window를 가짐
수신 전에 3 way handshaking
을 통해 수신 호스트의 receive window size에 자신의 send window size를 맞추게 됨
2. 혼잡제어 (Congestion Control)
- 송신측의 데이터는 지역망/인터넷으로 연결된 대형 네트워크를 통해 전달
- 한 라우터에 데이터가 몰릴 경우, 데이터 모두 처리 불가
- 이런 경우 호스트들은 다시 재전송 => 혼잡 가중 => 오버플로우/데이터 손실 등
- 송신 측에서 보내는 데이터의 전송속도를 강제로 줄이는 과정이
혼잡제어
- 네트워크 내에 패킷의 수가 과도하게 증가하는 현상을
혼잡
이라 함
- 혼잡 현상을 방지하거나 제거하는 기능을
혼잡제어
라고 함
- 흐름제어가 송신측/수신측 사이의 전송속도를 다루는 데 반해, 혼잡제어는 호스트와 라우터를 포함한 넓은 관점에서 전송 문제를 다룸
해결
- Fast Recovery (빠른 회복)
- 혼잡한 상태가 되면 window size를 1로 줄이지 않고 반으로 줄인 후 선형증가
- 이 정책까지 적용하면, 혼잡 상황을 한 번 겪고 나서부터는 순수한 AIMD 방식으로 동작
출처
2023-CS-Study github
Tech Interview