Notice
Recent Posts
Recent Comments
Link
어떻게 하면 잘 정리했다고 소문이 날까...
[네트워크 3-1편] Transport Layer 본문
총 7개의 내용 중 4번까지 우선적으로 정리합니다.
TCP 관련 내용은 양이 많기 때문에 TCP 편으로 분리하여 정리합니다.
1. Transport Layer Services
2. Multiplexing and Demultiplexing
3. Connectionless UDP
4 Reliable Data Transfer
5. Connection-Oriented TCP
6. Congestion Control
7. TCP Congestion Control
✔️Transport Layer Services
- Transport Services and Protocols
- 전송 프로토콜은 OS에 의해 구현.
- 전송 측) message를 segment로 쪼갠다.
- 수신 측) segment를 모아서 message로 만든다.
- Transport Layer VS Network Layer
- Transport Layer: logical communication between processes.
- Network Layer: logical communication between hosts.
- Internet Transport - layer Protocol
- TCP
- reliable, in-order delivery.
- flow control, congestion control.
- connection-oriented, connection setup.
- UDP
- unreliable, un-ordered delivery
- best-effort service
- no delay guarantee
- no guaranteed bandwidth.
- TCP
✔️Multiplexing and Demultiplexing
- Transport Layer에서 다중화와 역다중화가 이뤄짐.
- Multiplexing: 출발지 호스트에서 소켓으로부터 데이터를 모으고 이에 대한 세그먼트를 생성하기 위해 각 데이터에 헤더 정보를 캡슐화하고 그 세그먼트를 네트워크 레이어로 내림.
- Demultiplexing: 전송 레이어의 세그먼트를 올바른 소켓으로 전달하기.
- 동작과정
- host가 IP datagram을 받음.
- 각 datagram에는 source IP주소와 destination IP 주소가 있음.
- 각 datagram은 하나의 segment를 가짐.
- 각 segment에는 source port와 destination port가 있음.
- IP주소와 port number를 가지고 올바른 socket으로 찾아감.(=demux)
- UDP Demultiplexing
- Destination IP주소와 port Number만으로 올바른 소켓을 찾아감.
- TCP Demultiplexing
- 4가지 요소로 구분함.
- source IP address
- source Port number
- destination IP address
- destination Port number
- 세그먼트를 올바른 소켓으로 전달하기 위해 4가지 정보를 모두 사용
- 서버는 여러 개의 TCP 소켓을 지원함.
- 4가지 요소로 구분함.
- 웹서버와 소켓
- 웹 서버는 하나의 프로세스가 여러 개의 스레드를 가짐. (새로운 연결 소켓 + 새로운 스레드 생성)
- 같은 IP의 같은 Port Number로 들어오더라도, 출발 IP와 출발 PortNumber로 구분한다.
- host가 IP datagram을 받음.
- 동작과정
✔️Connectionless UDP
- UDP: User Datagram Protocol
- best effort service
- packet loss/out of order 발생 가능.
- connectionless
- handshaking 과정이 없음.
- 각 udp segment는 독립적이다.
- 사용하는 곳: 미디어 스트리밍, DNS
- Reliable Transfer over UDP: application layer단에서 추가함.
- UDP Segment Header
- Why UDP?
- no connection establishment (delay X)
- simple
- small header size
- conegstion control X (자유로운 앱 동작)
- UDP checksum
- 수신자를 위해 작성.
- 에러 detection을 위해 사용.
✔️Reliable Data Transfer
- application, transport, link layer에서 중요하다.
- RDT 서비스
- 우리는 신뢰적 채널이 구축되었 있다고 느껴지지만, 실제로는 unreliable channel이 구축되어 있고, 여기 transport layer 단에서 reliable protocol을 구축한 것.
- RDT 1.0
- 가정) 비트 에러 X, 패킷 손실 X, 완전히 Reliable 하다.
- RDT 2.0 : 비트 에러 존재
- 비트 에러를 막기 위해 ACK/NAK <수신자 전송> 이 사용.
- NAK이면 송신자가 패킷 한번 더 전송.
- error detection과 feedback 추가.
- RDT 2.0은 결함이 존재.
- ACK/NAK이 손상되었을 수 있다.
- Duplicate packets: seq#를 달기.
- Stop and Wait: 패킷을 보내고 응답을 받을 때까지 전송하지 않음.
- RDT 2.1: 손상된 ACK, NAK 처리.
- 전송자
- make_pkt하고 seq#(0/1) 추가.
- seq#0과 1로 충분한가? -> Stop and wait 이기 때문에 괜찮음.
- ACK/NAK이 corrput되지 않았는지 확인 필요.
- 수신자
- 패킷이 duplicate인지 아닌지 확인 필요.
- 수신자는 마지막 ACK,NAK이 잘 도착했는지 확인 불가.
- 순서가 바뀌는 경우, ACK/NAK을 한번 더 전송
- 전송자
- RDT 2.2: Only ACK
- NAK을 보내는 것 대신, 잘 받아진 패킷의 ACK을 한번 더 전송.
- duplicate ACK은 NAK과 같은 행위.
- ACK에 순서번호 추가하기.
- RDT 3.0: 에러와 패킷 손실 발생
- 전송자가 reasonable한 시간동안 기다리기 -> timer 설정.
- ACK이 오지 않았다면, 다시 패킷 전송.
- 패킷이 지연되었다면, 다시 전송된 패킷은 duplicate 에 해당. (seq#로 관리)
- 카운트 타이머 활용.
- 기다리는 시간이 줄어들면, premature timeout이 발생 가능.
- 핵심은 seq#와 timer가 해결 방안으로 채택되었다는 것.
- Pipelined Protocol
- stop and wait은 자원을 비효율적으로 활용.
- 파이프라이닝: sender allows multiple inflight, yet to be acknowledge pkts.
- 앞의 작업에 대한 ack이 오기 전에 다음 job을 밀어넣기.
- seq#랑 buffering으로 조절.
- Go-Back-N: N번째부터 다시 보내기.
- 한 번에 N개의 Packet을 파이프라인에 밀어넣음.
- cumulative ACK 전송. (누적 ACK)
- sender는 ACK을 받지 못한 패킷 중 가장 오래된 패킷에 대한 타이머를 가지고 있음.
- 타임 아웃 시 해당 패킷부터 재전송함.
- 이전에 받은 패킷들은 버리게 됨.
- Selective Repeat : 선택된 것만 다시 보내기
- 수신자 측에서 버퍼링은 필수!
- unACKED packet은 전송자가 재전송함.
- 순서에 맞지 않으면 일단 buffered 해두고 다시 순서가 맞아지면 delivered.
- 각 패킷마다 timer를 가지고 있다.
- 수신자에서 오류가 발생한 패킷을 수신했다고 의심되는 패킷만 송신자가 다시 전송.
'CS 지식 > NTW(네트워크)' 카테고리의 다른 글
[네트워크 5편] - Network Layer : Control Plane (0) | 2023.07.11 |
---|---|
[네트워크 4편] Network Layer : Data Plane (0) | 2023.04.17 |
[네트워크 3-2편] Transport Layer - TCP (0) | 2023.03.24 |
[네트워크 2편] Application Layer (0) | 2023.02.17 |
[네트워크 1편] 컴퓨터 네트워크와 인터넷 (0) | 2023.02.15 |