컴퓨터 사이언스(CS) - 네트워크 부분 -TCP/IPTCP/IP의 흐름제어
혼잡제어는 아래에서!
so-cute-danu-dev.tistory.com/76
TCP란?
인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나. IP와 함께 TCP / IP라는 명칭으로 널리 불린다. 근거리 통신망, 인트라넷, 인터넷 ( Unreliable )에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 패킷을 안정적, 순서대로, 에러없이 교환( Reliable )할 수 있게 해준다. 즉, 네트워크 통신에서 신뢰성있는 연결을 보장한다. TCP는 네트워크 혼잡 방지 알고리즘(network congestion avoidance algorithm)을 사용한다. |
TCP의 구조는 아래에서!
so-cute-danu-dev.tistory.com/74
TCP의 신뢰성 있는 연결시 4가지 문제
1. 손실(Loss) : Packet이 손실될 수 있는 문제 |
흐름제어 / 혼잡제어 개념
흐름제어 ( Endsystem 대 Endsystem ) - 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법 - 흐름제어는 Reciever가 Packet을 지나치게 많이 받지 않게 조절하는 것 - 기본 개념은 Reciever가 Sender에게 현재 자신의 상태를 Feedback 한다는 것 혼잡제어 - 송신측의 데이터 전달과 네트워크의 데이터 처리 속도차이를 해결하기 위한 기법 |
전송의 전체 과정
Application 계층 : 송신자 Application 계층이 Socket에 Data를 씀 Transport 계층 : Data를 Segment에 감쌈. 그리고 Network 계층에 넘겨줌 아래 계층에서 Receiving Node로 전송. Sender는 Send Buffer에 Data 저장, Receiver는 Receive Buffer에 Data 저장 Application에서 준비가 되면 이 Buffer에 있는 것을 읽기 시작 흐름제어의 핵심은 Receiver Buffer가 넘치지 않게 하는 것 즉, Receiver는 RWND(Receive WiNDow) 의 Receive Buffer의 남은 공간을 알려줌 |
OSI 7계층의 자세한 내용은 아래로!
so-cute-danu-dev.tistory.com/66
흐름제어
- 수신측이 송신측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신측의 속도가 빠를 경우 문제가 발생 - 수신측에서 제한된 저장 용량을 초과한 이후에 도착하는 데이터는 손실 될 수 있으며, 만약 손실이 발생한다면 불필요하게 응답과 데이터 전송이 송/수신측 간에 빈번하게 발생 - 이러한 위험을 줄이기 위해 송신 측의 데이터 전송량을 수신측에 따라 조절 |
해결방법
정지-대기(Stop and Wait)
- 가장 단순한 형태의 흐름제어 - 송신측이 송신 할 때마다 수신측이 ACK 또는 NAK를 받음 - 송신측은 ACK를 받을 경우만 다음 데이터 전송 - 송신측이 NAK를 받거나 일정 시간이 지날때까지 응답이 없는 경우 데이터 재전송 장점 : 구현 방법이 단순하고, 송신측내에 최대 프레임 크기의 버퍼를 1개만 잡아도 된다 단점 : 송신측이 ACK를 수신할 때까지 다음 프레임을 전송할 수 없으므로 전송 효율이 떨어짐 개선방안은 슬라이딩 윈도우 방식이 있다! |
슬라이딩 윈도우 방식 ( 연속적 ARQ - Continuous ARQ = Go Back n ARQ)
- 흐름제어를 위한 검출후 재전송 방식(ARQ)의 일종 ( 혼잡제어도 가능 ) - 수신측에서 설정한 윈도우 크기만큼 송신측에서 확인응답 없이 세그먼트를 전송할 수 있게 하여 데이터 흐름을 동적으로 조절하는 제어기법 - 전송은 되었지만, ACK를 받지못한 Byte의 숫자를 파악하기 위해 사용하는 프로토콜 - 일정 윈도우 크기 이내에서 한번에 여러 패킷을 송신 - 이들 패킷에 대하여 단지 한 번의 ACK 로써 수신을 확인 - 윈도우 크기를 변경시키고 윈도우를 옮기며 흐름제어를 하는 기법 Window |
슬라이딩 윈도우 동작상 주요 요소 윈도우 구조 - 송신기, 수신기 모두에 유사한 윈도우 구조를 유지할 필요 있음 - 가장 중요한 변수는 버퍼의 여유 용량(윈도우크기) 윈도우 크기(Window Size) - 한번에 전송할 수 있는 최대 프레임 크기(통상, '바이트갯수' N)를 의미 - 수신 윈도우 크기 = 수신 버퍼의 여유 용량 ( rwnd, Receiving Window ) 수신 윈도우 크기로써 수신측에 의해 결정, 송신측에 통보 아직 확인 응답되지 않았으나, 송신할 패킷 덩어리의 크기 - 혼잡 윈도우 크기 ( cwrd, Congestion Window ) 네트워크 혼잡을 초래하지 않도록 송신율을 제한하는 (송신) 윈도우 크기 윈도우 크기 알림 ( Window Advertizement, Window Update ) 기능 - 수신측에서 송신측에게 얼마나 큰 윈도우 크기를 유지해야 하는지 알려주는 것 윈도우 이동 - 윈도우 시작위치(n) |
TCP 슬라이딩 윈도우 구현 요소 TCP 헤더 내 3개 필드( 순서번호, 승인번호, 윈도우 크기 )로 구현 - 통상, 송신측 TCP는 수백 바이트씩 모아 세그먼트 단위로 나눔 - 윈도우 크기 내에서 1 이상의 세그먼트들을 연속 송신 후 한번의 확인 응답
|
참조 : www.ktword.co.kr/abbr_view.php?nav=2&m_temp1=1469&id=746
'Computer Science > Network' 카테고리의 다른 글
[ Computer Science ] Network - UDP (0) | 2021.04.08 |
---|---|
[ Computer Science ] Network - TCP/IP (흐름제어/혼잡제어)(2) (0) | 2021.04.07 |
[ Computer Science ] Network - TCP의 구조 (0) | 2021.04.03 |
[ Computer Science ] Network - TCP 3 way Handshake / 4 way Handshake (0) | 2021.04.02 |
[ Computer Science ] Network - OSI 7계층 (0) | 2021.03.31 |