TCP/IP 계층
TCP/IP 계층은 현재 인터넷에서 사용되는 통신 방법이다.
1계층 : Network Access Layer
- OSI 7계층의 물리계층과 데이터 링크 계층에 해당
- 물리적인 주소로 MAC 을 사용
- LAN, 패킷망 등에 사용
2계층 : Internet Layer
- OSI 7계층의 네트워크 계층에 해당
- 통신 노드 간의 IP패킷을 전송하는 기능과 라우팅 기능
- 프로토콜 - IP, ARP, RARP
3계층 : Transport Layer
- OSI 7계층의 전송 계층에 해당
- 통신 노드 간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당
- 프로토콜 - TCP, UDP
4계층 : Application Layer
- OSI 7계층의 세션 계층, 표현 계층, 응용 계층에 해당
- TCP/UDP 기반의 응용 프로그램을 구현할 때 사용
- 프로토콜 - FTP, HTTP, SSH
reliable network가 보장하는 문제점
TCP 는 unreliable network에서, reliable network를 보장할 수 있도록 하는 프로토콜이다. 그리고 아래는 unreliable network에서 발생할 수 있는 문제들이다.
- 패킷 손실 : 네트워크 혼잡, 오류, 패킷 드랍 등 다양한 요인으로 인해 발생할 수 있다.
- 패킷 순서 오류 : 데이터 패킷이 전송되는 동안 네트워크에서는 다양한 경로를 통해 전달될 수 있다. 이로 인해 도착 순서와 전송 순서가 일치하지 않을 수 있다.
- Congestion(네트워크 혼잡) : 네트워크에서 발생하는 트래픽량이 네트워크의 처리 용량을 초과할 때 발생한다. 이로 인해 패킷 손실, 지연, 대기 시간 증가 등의 문제가 발생할 수 있다.
- Receiver Overload(수신자 과부하) : 데이터의 속도가 receiver가 처리할 수 있는 속도를 초과할 때 발생할 수 있다.
전송 과정
- 응용 계층에서 sender application layer(송신측 응용 계층)가 데이터를 소켓에 기록한다.
- 전송 계층에서 데이터를 segment로 분할하고 세그먼트를 네트워크 계층으로 전송한다.
- 이후의 계층에서 receiving node로 받고, 이때 sender와 receiver 각각 send buffer과 receive buffer에 데이터를 저장한다.
- application에서 준비가 되면 buffer에 있는 데이터를 읽는다. 이때, receive buffer이 넘치지 않게 컨트롤 해야 한다. 따라서 receiver는 RWND(Receive WiNDow, receive buffer의 가용 공간)값을 통해 송신 측에게 receive beffer의 남은 공간을 알린다.
흐름제어와 혼잡제어
흐름제어 (Flow Control)
흐름 제어는 데이터 통신에서 송신 측과 수신 측 사이의 데이터 전송 속도를 조절하는 메커니즘이다. 송신 측이 너무 빠른 속도로 데이터를 전송하면 receive buffer가 오버플로우되어 데이터의 유실이 발생할 수 있기 때문에 흐름 제어를 통해 수신 측이 처리할 수 있는 데이터 양을 적절하게 조절하여 Receiver Overload를 예방한다.
해결 방법
1. Stop-and-Wait 흐름 제어
- 데이터를 여러 개의 프레임으로 분할하고, receiver는 데이터 프레임을 수신할 준비가 되었음을 나타낸다.
- receiver가 ACK를 받으면 sender는 다음 프레임을 전송한다.
- 위의 과정은 sender가 EOT(End of Transmission) 프레임을 전송할 때까지 계속된다.
- 장점
- 매우 간단하며 각 프레임이 정확하게 확인되고 확인 응답을 받는다.
- 단점
- 한 번에 하나의 패킷 또는 프레임만 전송할 수 있기때문에 상당히 느리다.
- 전파 지연(propagation delay)이 전송 지연(transmission delay)보다 훨씬 긴 경우에는 효율성이 떨어지고 생산성이 낮아질 수 있다.
2. Sliding Window 흐름 제어
- 윈도우(Window) : sender가 receiver에게 연속적으로 전송할 수 있는 데이터 프레임의 범위이다. TCP/IP를 사용하는 모든 호스트들은 송신/수신을 하기 위한 각각의 윈도우를 가지고 있다. 송신 호스트들은 실제 데이터를 보내기 전에 '3-way handshaking'을 통해 수신 호스트의 receive window size에 자신의 send window size를 맞춘다.
- 수신측에서 설정한 위도우 크기 만큼 송신측에서 확인응답없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어 기법이다.
- 윈도우 크기만큼 모든 패킷을 전송하고, 그 패킷들의 전달이 확인 되면(ACK 응답 수신) 윈도우를 옆으로 옮겨서 다음 패킷들을 전송한다.
- Go Back N : 송신자가 수신자로부터 NAK 응답(오류 응답)을 받으면 윈도우의 시작 위치를 재조정하고 해당 위치부터 다시 전송을 시작한다. → 3번에서 NAK 응답이 들어오면 4번, 5번을 수신하였더라고 3번부터 다시 송신한다.
- Selective Repeat : NAK 응답을 받은 프레임만 재전송한다.
혼잡제어 (Congestion Control)
혼잡 제어는 데이터의 흐름을 조절하고 네트워크의 사용 가능한 대역폭을 효율적으로 활용하게 함으로써 네트워크의 수용량을 초과하는 데이터 트래픽이 발생하여 생길 수 있는 전송 지연, 패킷 손실 등의 문제들을 관리하고 제어하는 매커니즘이다.
해결 방법
1. AIMD (Additive Increase / Multiplicative Decrease)
윈도우 크기를 조절하는 방법으로 선형 증가와 지수적 감소를 조합한다.
- 증가 단계 (Additive Increase) : 혼잡이 감지되지 않으면 송신 윈도우 크기를 1씩 증가시킨다. 이는 네트워크 용량을 효율적으로 사용하기 위한 방식이다.
- 감소 단계 (Multiplicative Decrease) : 혼잡을 감지하면 송신 윈도우 크기를 절반으로 줄인다. 이는 네트워크 혼잡을 피하기 위해 데이터 전송 속도를 감소시키는 역할을 한다.
- 한 호스트가 나중에 진입하더라도 처음에는 불리하지만 시간이 흐르면서 점점 평형상태가 되는게 특징이다.
- 문제점
- 윈도우 사이즈를 하나씩 늘려가기 때문에 초기에 큰 대역폭을 바로 사용하지 못한다.
- 네트워크가 혼잡해지는 상황을 미리 감지할 수 없고 혼잡상태가 발생한 이후에 대역폭을 감소시킨다.
2. Slow Start
연결이 시작되고 송신 윈도우 크기를 2배씩 증가시키는 방식이다. 혼잡이 발생하면 윈도우 크기를 1로 확 줄인다.
3. Fast Retransmit
패킷 손실을 감지하고 재전송을 빠르게 수행하는 방식으로 패킷 손실을 감지하면 수신측은 확인 응답을 받지 않고 중복으로 수신된 패킷을 인식하고, 이를 통해 패킷 손실을 추정한다. 이후 송신측은 타임아웃 시간이 지나지 않았어도 바로 재전송하기 때문에 빠른 전송률을 유지할 수 있다.
위 그림에서는 4번 패킷 이후에 6번 패킷이 도착한다. 패킷 8번 까지 잘 도착한 이후 ACK 가 5이므로 패킷 4까지는 정상적으로 수신했다는 것을 알 수 있다. 하지만 ACK 5를 보낸 수신자가 그 뒤에서 세 번의 ACK 5를 보내자 송신자는 Fast retransmit을 수행해서 패킷 5를 재전송하게 된다.
4. Fast Recovery
패킷 손실을 감지하면 송신 윈도우 크기를 절반으로 감소시키고, 패킷 손실 직전까지 재전송된 패킷들에 대한 확인 응답을 기다린다. 이후, AIMD 방식에 따라 윈도우 크기를 선형적으로 증가시키는데 이것은 패킷 손실로 인한 혼잡을 피하고 네트워크 성능을 회복시키는 데 도움을 준다.
참고:
https://hahahoho5915.tistory.com/15
https://www.geeksforgeeks.org/flow-control-in-data-link-layer/
'Computer Science > Network' 카테고리의 다른 글
[Network] HTTP & HTTPS (0) | 2023.07.07 |
---|---|
[Network] 대칭키 & 비대칭키 (0) | 2023.07.07 |
[Network] UDP (User Datagram Protocol) (0) | 2023.06.30 |
[Network] TCP 3 & 4 way handshake (0) | 2023.06.30 |
[Network] OSI 7 계층 (0) | 2023.06.23 |