Network Layer (네트워크 계층, 3계층)

 

- 송신 호스트에서 수신 호스트로 세그먼트를 전송한다.

 

- 송신 호스트에서 세그먼트를 데이터그램(datagram)으로 캡슐화한다.

 

- 수신 호스트에서 세그먼트를 전송 계층(4계층)으로 전송한다.

 

- 네트워크 계층이 모든 호스트와 라우터에서의 프로토콜을 지정한다.

 

- 라우터는 해당 라우터를 통과하는 모든 IP 데이터그램에 있는 헤더 필드를 검사한다.

 

 

 

Network Layer Functions and Plane

 

- 라우팅 (Routing) : 출발지에서 목적지까지의 모든 경로를 결정한다. 라우터에서 라우팅 알고리즘으로 포워딩 테이블을 만든다. 포워딩 테이블에는 목적지 IP 주소와 해당 포트번호가 저장되어 있다.

 

- 포워딩 (Forwarding) : 라우터 내부에 입력 버퍼와 출력버퍼가 있다. 입력버퍼로 들어온 패킷의 헤더에 있는 IP주소와 포워딩 테이블의 IP주소를 비교하여 적절한 포트번호를 가진 출력 버퍼로 패킷들을 옮긴다.

 

- 라우팅이 출발지에서 목적지까지 여행을 계획하는 과정이라면, 포워딩은 여행 중간의 하나의 지점을 지나가는 과정이다.

 

- Control plane

  • 넓은 네트워크의 논리적인 부분을 담당하는 뇌의 역할을 한다.

  • 데이터그램이 종단 사이에 라우터들에 의해 어떻게 라우팅되는지 결정한다.

  • 하드웨어 측면에서 라우터에 의해 구현되는 전통적인 라우팅 알고리즘 방식
  • 소프트웨어 측면에서 서버에 의해 구현되는 SDN(Software-Defined Networking) 방식
  • Per-Router Control plane : 각 라우터마다 있는 라우팅 알고리즘이 Control plane의 상호작용을 한다.

  • Logically Centralized Control plane : 별도로 중앙에 배치된 컨트롤러가 local control agents(CAS)로 각 라우터와 상호작용한다. 중앙에서 control plane이 이루어짐.

- Data plane

  • 각 라우터의 포워딩 함수들을 동작한다. , 다리가 동작하는 것과 유사하다.

  • 라우터 입력 버퍼에 도착한 데이터그램이 어떻게 출력 버퍼로 포워딩되는지 결정한다.

 


 

 

 

Network Service Model

 

- 송신자에서 수신자에게 데이터그램들을 전송하는 채널에 대한 서비스 모델은 두 가지가 있다.

 

- 각각의 데이터그램에 대한 서비스 : 지연 시간이 40ms 보다 적은 상태로 전달된다.

 

- 일련의 데이터그램들에 대한 서비스 : 순서가 중요한 데이터그램을 위한 서비스로, 전송을 위해 최소한의 대역폭이 보장된다. 또한 각 패킷간의 간격에서 변화(ex : Jitter)가 제한적이다.

ex) 영상코덱(MPEG)

 

 

 

라우터 입력 포트의 기능 (3계층)

 

- 패킷의 헤더 필드 값(목적지 IP주소)을 보고, 포워딩 테이블에 있는 출력 포트 번호를 찾는다.

 

- 포워딩 테이블에 있는 IP주소와 패킷의 목적지IP주소를 비교하는데 시간이 오래 걸린다.

 

- 큐잉(Queuing) : 데이터그램이 포워딩하는 속도보다 더 빨리 입력 포트에 도착하면, (입력 버퍼)에 저장된다.

 

- 목적지 기반의 포워딩 : 목적지 IP 주소만을 이용하여 포워딩한다. 전통적인 방식이다.

 

- 일반화된 포워딩 : 헤더 필드 값의 전체를 이용하여 포워딩한다.

 

 

 

목적지 기반의 포워딩

 

원래는 IP 주소를 범위로 정해 포트 번호를 구분한다. ]

 

- IP 주소가 32비트이다보니 전체 값을 저장하면 테이블이 너무 커진다. 따라서 IP 주소에서 앞부분에 정해진 비트까지만 보여주고 범위(range)를 정하여 포트번호를 구분한다. , 주소의 앞쪽만 매칭시켜서 해당 포트번호로 보낸다.

 

- Longest prefix matching : 패킷의 목적지 IP주소가 포워딩 테이블에서 둘 이상의 IP주소 범위에 포함될 경우, 그 중 비트가 가장 많이 공개된(가장 긴 prefix) IP 주소 범위의 포트번호로 포워딩한다.

 

[ 밑에 있는 예제의 정답은 위에서부터 01이다. ]


- TCAMs : Ternary Content Addressable Memories 의 약자로, 실제 라우터가 포워딩 테이블에서 IP 주소를 탐색하는데 시간이 많이 걸리므로 라우팅의 속도를 빠르게 하기 위해 IP 주소 검색을 위한 포워딩 테이블이 저장되는 메모리이다.

 

 

 

Switching fabrics

 

- 스위치 내부에서 각 입출력 포트를 가상의 회선으로 그물 또는 직물처럼 연결하여 구성되는 모양을 섬유(fabric)로 비유한 것이다. , 스위치 내부가 직물 또는 망처럼 보이는 모양

 

- 입력 버퍼로부터 적절한 출력 버퍼로 패킷을 전송한다.

 

- Switching rate : 입력 포트에서 출력 포트로 패킷을 전송할 수 있는 속도로, 종종 다수의 입출력 라인 속도에서 측정되어진다. n개의 입력이 있을 때, 스위칭 속도는 입력 라인 속도의 N배가 요구된다.

 

[ 스위칭 구조 분류  ]


- Switching via Memory

  • CPU의 직접적인 제어 아래에 스위칭하는 전통적인 컴퓨팅 방식으로, 첫 세대 라우터들의 스위칭 구조이다.

  • 패킷이 시스템 메모리로 복사된다.

  • 속도가 메모리 대역폭에 의해 제한된다.

  • 메모리에 접근하는 시간도 많이 걸린다.

 

- Switching via a Bus

  • 버스 구조는 2 이상의 신호선들을 모아놓은 것으로, 디지털 시스템에서 디지털 요소들을 상호 연결하는데 필요한 데이터 신호 통로들의 구조화된 그룹이다.

  • 입력 포트 메모리로부터 출력 포트 메모리까지 하나의 공유된 버스를 통해 데이터그램을 스위칭한다.

  • Bus contention : 스위칭 하는 속도는 버스의 대역폭에 의해 제한된다.

  • ex) Cisco 5600 제품이 32Gbps의 속도를 가진 버스 구조로 접근성에 있어서 충분한 속도를 가진다.

 

- Switching via Crossbar

  • 제한적인 버스 대역폭을 해결한다.

  • 다수의 프로세서들을 연결하기위해 개발된 interconnection nets, banyan networks, crossbar 망이다.

  • 진보된 구성으로는, 데이터그램을 고정된 길이의 셀들로 분할하여 단편화한다.

  • ex) Cisco 12000 제품이 interconnection network를 통해 60Gbps의 속도로 스위칭한다.

 

 

 

입력 포트 큐잉(Queuing)

 

- 큐잉은 입력 큐(버퍼)에서 패킷이 저장되는 것을 의미한다.

 

- 입력 큐(버퍼)가 꽉 차면 오버플로우(Overflow)가 발생했다고 한다.


- 큐잉 지연(Queuing delay) : 큐에서 패킷들이 대기하는 시간이다.

 

- 오버플로우가 발생하면 큐잉 지연(Queuing delay)이 일어나고 전송 속도가 저하된다. 또한 큐에 들어오지 못한 패킷들은 손실된다.

 

- HOL blocking : Head-of-the-Line blocking 의 약자로, 큐에서 저장된 패킷들 중 앞에 있는 패킷이 속도가 느려 뒤에 있는 패킷이 못가는 상황을 말한다. , 둘 이상의 다른 입력 버퍼에서 같은 출력 버퍼로 이동하는 패킷들이 있을 때, 하나가 이동하면 다른 입력 버퍼의 맨 앞의 패킷은 이동할 수 없다. 그러면 대기하는 패킷의 뒤에 있는 패킷들도 덩달아 대기해야하는 상황을 말한다.

 

 

 

라우터 출력 포트의 기능 (3계층)

 

- 버퍼링(Buffering)

  • 더 빠른 속도의 구조(fabric)로 인해 발생한다. 혼잡 제어나 버퍼공간의 부족으로 데이터그램(패킷들)이 손실될 수 있다.

  • 스위치를 통해 도착하는 속도가 출력 라인 속도보다 크면, 버퍼링이 발생한다.

  • 출력 버퍼에서 오버플로우가 발생하게 되면 큐잉 지연 및 패킷의 손실이 발생한다.

- 스케줄링(Scheduling) : 최고의 성능을 내기 위해 전송할 패킷의 우선순위를 조정하는 기능이다. 기본적으로 FIFO(First-In-First-Out)방식이다.

 

 

 

출력 포트 스케줄링(Scheduling)

 

- 스케줄링이란 링크로 보낼 다음 패킷을 결정하는 것이다.

 

- FIFO 스케줄링 : 기본적인 방식으로 처음 큐에 도착하는 패킷이 먼저 전송된다. 즉 순서에 맞게 전송한다.

 

- 오버플로우 발생 시 패킷을 버리는 방법

  • tail drop : 꼬리 자르듯이 도착하는 패킷들을 버린다.

  • priority : 우선순위를 기반으로 낮은 순위의 패킷들을 버린다.

  • random : 무작위로 패킷을 뽑아 버린다.

 

- Priority Scheduling : 가장 높은 우선순위를 가진 큐에 담긴 패킷들을 먼저 링크로 보낸다. 즉 순위가 낮은 큐는 순위가 높은 큐가 비어 있어야 패킷들을 전송할 수 있다.

 

- Round Robin(RR) Scheduling : 다수의 큐들이 돌아가면서(Cyclically) 각각의 패킷들을 전송한다.

 

- Weighted Fair Queuing (WFQ) : 라운드 로빈(RR) 스케줄링과 유사하나, 각 큐마다 대기 시간이 있다는 점에서 차이가 있다. , 각 큐는 돌아가면서 패킷을 전송하지만 전송되는 시간간격이 정해져 있다.

 

 

 

 

 

 

 

 

Transmission Media

 

- 유선 통신(Wired)을 위한 전송 매체

  • Twisted-Pair Cable : TP 케이블
  • Coaxial Cable : 동축 케이블
  • Fiber-Optic Cable : 광섬유 케이블

 

- 무선 통신(Wireless)을 위한 전송 매체

  • Radio Wave : 라디오파
  • Microwave : 마이크로파
  • Infrared : 적외선파

 

 

 

Twisted-Pair Cable

 

- 플라스틱 단열재로 감싸진, 구리선으로 된 두 개의 컨덕터가 꼬여있는 형태이다.

 

- 하나의 선은 수신자에게 신호를 전송하고, 다른 하나는 Ground Reference 로써 이용되어 진다.

 

- 전자기적인 간섭에 의해 발생하는 잡음을 줄이기 위해 두 동선을 꼬아서 하나의 형태를 가진다. , 꼬임이 클수록 외부의 영향(잡음)을 덜받는다.

 

- 무차폐 TP (Unshielded TP, UTP) : 통신에서 이용되어지는 가장 일반적인 TP 케이블로로, 값이 싸고 가늘다.

 

- 차폐 TP (Shielded TP, STP) : 잡음이나 간섭을 막음으로써 케이블의 질을 향상시킨다. 알루미늄 포일로 차폐 처리하고 비닐로 씌운 형태로, 고가이다.

 

 

 

Coaxial Cable

 

- TP 케이블보다 차폐가 더 잘되어있으므로, 높은 대역폭과 강한 잡음내성이 있다.

 

- 장거리 통신에서 높은 속도를 가진다.

 

- Inner 컨덕터, Outter 컨덕터로 2가지의 컨덕터가 있으며, Outter 컨덕터 양 옆에 단열재가 있고, 전체를 플라스틱 커버가 감싼다.

 

 

 

Fiber-Optic Cable

 

- 유리나 플라스틱으로 구성되어 빛이 통과가 잘되므로, 빛의 형태에서 신호가 전송된다.

 

- 빛이 있으면 1, 없으면 0이다.

 

- 반사나 굴절이 발생한다.

 

- 전반사가 채널로 빛을 안내하는 역할을 한다.

 

- Multi-Mode : 전파 모드 중 하나로, 신호가 튕기다보니 먼저 온 신호와 나중에 온 신호 사이에 시차가 발생하여, 출발지 신호와 도착지 신호에 차이가 생긴다.

  • Step-Index : 많이 튕긴다.
  • Graded-Index : 덜 튕긴다.

 

- Single-Mode : 전파 모드 중 하나로, 직진성이 높아 우수한 퀄리티의 신호가 가게 된다. , 출발지 신호와 도착지 신호에 차이가 거의 없다.

 

- 높은 대역폭을 이용하므로 고속링크를 제공한다.

 

- 신호 감쇄(Attenuation)가 적다.

 

- 전자기적 신호의 간섭에 강하다.

 

- 무게가 가볍다.

 

- 도청에 강하다. 링크를 컷해서 신호를 빼내는 데 컷하는 순간 빛이 빠른 속도로 빠져나가게 되므로 도청이 불가능하다.

 

- 단점 : 빛의 전파가 단방향이며, 비용이 많이 든다.

 

 

 

Wireless

 

- 무선 통신에서는 물리적 컨덕터를 이용하지 않고 전자기파를 전송한다.

 

- 신호는 자유 공간을 이동하는 안테나의 특성을 받는 브로드캐스트이다.

 

- 무선 통신에 사용되는 신호들을 수신할 수 있는 기기를 가진 누구나 이용할 수 있다. , 사용에 제약이 없다.

 

- Radio wave < microwave < infrared < ligh wave 순으로 갈수록 고주파인데, 고주파수는 보낼 수 있는 데이터 양이 많고 직진성이 큰 반면에 체력이 약해 자연환경()에 취약하다.

 

- Radio Wave

  • 3KHz ~ 1GHz 범위의 전자기파가 해당된다.
  • 모든 방향으로 신호를 전달한다.
  • Sky propagation(transmission)
  • 라디오나 텔레비전과 같은 Multicast 통신에 이용된다.

 

- Microwave

  • 1GHz ~ 300GHz 범위의 전자기파이며, Unicast 대역이다.
  • 단방향 통신이다.
  • Line-of-sight propagation
  • 셀룰러 데이터, 위성 통신, 무선 LAN과 같은 Unicast 통신에 이용되어진다.

 

- Infrared

  • 300GHz ~ 400THz 범위의 전자기파이다.
  • Lin-of-sight propagation
  • 단거리 통신에 이용되어진다. (고주파일수록 체력이 약하여 멀리 나가지 못함)





 

 

 

Congestion Control

 

- 너무 많은 출발지(네트워크 장비)에서 네트워크가 감당하기에는 너무 많은 데이터를 너무 빠르게 전송하여 발생하는 네트워크 혼잡 현상이다.

 

- 징후

  • 라우터에서 버퍼가 오버플로우되어 패킷 손실의 발생
  • 라우터 버퍼에서 긴 큐잉 지연(Queueing delay) 발생

 

- 흐름 제어(Flow Control)와는 다르다.

 

 

 

라우터가 무한한 크기의 버퍼를 갖는 경우

 

- 출력 링크의 수용력을 R이라고 가정했을 때,

  • 전송률이 아무리 커도 링크 처리량(수용력)R/2을 넘을 수가 없다.
  • 지연 시간이 지수적으로 증가하므로 혼잡 시 큰 지연이 발생한다.

 



 

 

라우터가 유한한 크기의 버퍼를 갖는 경우

 

- 송신측에서는 타임아웃된 패킷(손실 패킷)의 재전송이 이루어진다. , 큐가 유한할 경우 패킷의 손실이 발생한다.

  • (λin : 입력 버퍼에 패킷이 들어오는 속도, λout : 출력 버퍼의 송신 속도)
  • 입력 버퍼의 속도와 출력 버퍼의 속도가 같은 경우 : λin = λout
  • 전송 계층의 입력 버퍼의 속도가 재전송 속도까지 포함할 경우 : λ'in = λout

 

[왼쪽부터 가장 이상적인 상황, 덜 이상적인 상황, 가장 현실적인 상황]


- 가장 이상적인 상황 : 라우터 버퍼가 이용가능할 때만 송신측에서 패킷을 전송하므로 어떤 패킷의 손실도 발생하지 않음.

λin = λ'in = λout

 

- 덜 이상적인 상황 : 라우터 버퍼가 꽉 차서 패킷이 손실될 수 있으므로 송신자는 패킷이 손실되었을 때만 재전송한다.

λ'in > λout

 

- 가장 현실적인 상황 : 라우터 버퍼가 꽉 차서 패킷이 손실될 수 있고, 패킷이 크게 지연되어 송신측의 타이머가 타임아웃될 수 있으므로, 두 상황 모두 재전송한다. , 패킷의 큰 지연으로 불필요한 재전송이 늘어난다.

λ'in >> λout

 

- 혼잡 비용

  • 손실된 패킷을 재전송한다.
  • 큰 지연으로 인한 불필요한 재전송이 발생 => 라우터가 패킷의 불필요한 복사본을 포워드(입력버퍼->출력버퍼)하는데 링크의 대역폭을 사용하므로 네트워크 자원이 비효율적으로 사용된다.

 

 

여러 개의 네트워크 장비를 거쳐가는 경우

 


- λ'in : 재전송을 포함하여 입력버퍼에 패킷이 들어오는 속도

 

- 데이터의 traffic이 증가하게 되므로 혼잡이 커지고 지연 시간이 길어진다.

 

- λ'in 이 계속 증가하게 되면(재전송 발생 증가), 패킷이 경로 상에 버려지는 상황이 증가한다는 뜻으로, 버려지는 지점까지 패킷을 전송하기 위해 상위 라우터에서 사용되는 전송 용량은 낭비된다.

 

 

 

AIMD (Additvie Increase Multiplicative Decrease)

 

- 혼잡 윈도우 크기(Congestion Window Size, cwnd) : 수신측의 윈도우 크기(rwnd)에 영향을 받으며, 송신측에 있는 윈도우 크기이다.

 

- 전송 후 ACK받지 못한 세그먼트들 : LastByteSent - LastByteRead <= cwnd <= rwnd

 

- 송신측에서 ACK를 못받고 타임아웃되면 패킷 손실이 발생한 것으로 알고 Congestion으로 받아들인다. 따라서 송신측은 윈도우 크기(cwnd)를 줄여서 데이터 전송 속도를 조절한다.

 

- 송신측에서 패킷의 손실이 발생할 때까지 이용가능한 대역폭을 탐지하면서 전송률(Congestion Window Size, cwnd)을 증가시킨다.

 

- 가법적 증가(Additive Increase) : 손실이 발견될 때까지 매 RTT(왕복시간)마다 1MSScwnd를 증가시킨다. 추가로 매 ACK마다 cwndMSS * (MSS/cwnd) 바이트씩 증가한다.

 

- 승법적 감소(Multiplicative Decrease) : 손실이 발생한 후에 cwnd를 절반으로 감소시킨다.

 

- 그래프 상에서 cwnd 값이 톱니 모양의 패턴을 가지게 된다. 값이 꺾일 때마다 패킷의 손실이 발생한 것이다.

 


 

 

 

Congestion Control Details

 

- 송신자에서 ACK받지 않은 데이터 양을 제한하여 송신률을 제한한다.


 


- 송신자의 송신률(Bytes/sec):


- 송신자의 혼합감지

  • 손실 이벤트 : 타임아웃 또는 3개의 중복 ACK
  • 손실 이벤트가 발생하면 송신률을 감소시킨다.

- 혼잡제어 알고리즘의 3가지 요소

  • AIMD
  • 슬로 스타트(slow start)
  • 타임아웃에 대한 반응

 

 

 

Slow Start

 

- TCP 연결이 시작될 때 혼잡 윈도우 크기(cwnd)초기값은 1MSS 이다.

 

- TCP 연결이 시작한 이후 데이터의 첫 번째 손실이 발생하기 전까지 송신률을 지수적으로 증가시킨다.

 

- RTT마다(오류없이 ACK가 올때마다) cwnd2배씩 증가한다.

 

- , 연결가능한 대역폭이 MSS/RTT(송신률)보다 아주 큰 경우, 송신률은 cwnd와 비례하므로 초기에는 느리지만 지수적으로 빠르게 증가한다.

 


 

 

 

타임아웃에 대한 반응

 

- TCP Tahoe : 타임아웃 또는 3개의 중복ACK 상황에서 항상 cwnd1 MSS 로 설정한다.

 

- 타임아웃에 의해 감지된 손실 : 전혀 전송되지 않은 것으로 간주하고, 심각한 혼잡 상황으로 받아들인다.

  • cwnd = 1MSS (Slow Start 발생)
  • cwnd는 지수적으로 증가하다가 임계값(threshold)에 달하면, 선형적으로 증가(혼잡 회피)한다.

 

- 3개의 중복 ACK에 의해 감지된 손실 : 다른 세그먼트(or 패킷)는 잘 도착했으므로 일부 세그먼트들은 전송해도 된다는 것으로 간주하고, 조금 혼잡한 상황으로 받아들인다.

  • TCP Reno : cwnd는 절반으로 감소하고 이후에 선형적으로 증가한다.
  • 이전의 TCP Tahoe 는 슬로 스타트(Slow Start)로 진입한다.

 

[ Loss 발생 시, TCP Tagoe1MSS로 뚝 떨어짐, TCP Reno 절반으로 떨어짐 ]


- cwnd 값이 타임아웃 전의 1/2 크기에 도달할 때, 지수적 증가는 선형적 증가로 변경된다.

 

- 가변적 임계값(variable threshold) 설정 : 손실 이벤트가 발생 시 임계값을 손실 이벤트 전의 cwnd1/2 크기로 설정한다.

 


[전체적인 구상도] 


 

 

 

Throughput

 

- cwndRTT 함수로써 TCP의 평균처리율은 슬로스타트는 무시하고, 항상 전송한 데이터로 추정한다.

 

- 평균 처리율 

 

- 손실이 발생하면 윈도 크기는 1/2로 감소하고 전송률도 비례하므로 1/2로 감소한다.

 

- cwnd가 커지면 처리율이 증가(데이터 전송 속도가 빨라짐)하므로 Congestion도 증가한다.

 

- 미래에 장거리 및 고속링크일 경우 cwnd = 83,333 만큼 요구되는데 이는 많은 양의 세그먼트이며 손실 가능성이 높다.

 

- 손실 관점에서 평균 처리율 (L:손실률)


- 고속 환경을 위한 새로운 버전의 TCP 연구가 필요하다.

 

 

 

공평성 (TCP Fairness)

 

- K 개의 TCP 연결이 R bps의 전송률(대역폭)의 병목 링크(bottleneck link)를 통과하는 경우, 각 연결의 평균 전송률이 R/K에 가깝다면 TCP 혼잡제어 메커니즘은 공평하다.

 

- 공평한 이유는 이상적으로 두 처리율의 합은 R과 같아야 한다.

(동등한 대역폭 공유와 전체 대역폭 이용선의 교차 지점 가까운 곳의 처리율)

 

- 공평성과 UDP

  • 멀티미디어 애플리케이션들은 TCP를 사용하지 않으므로, 혼잡제어로 인한 전송 the고 조정을 하지 않는다.
  • UDP의 사용은 일정한 속도로 음성과 영상을 전송하며 패킷 손실을 감수한다.
  • TCP관점에서 UDP는 공평하지 못한데, 그 이유는 다른 연결과 협력하지 않고, 전송률 조절도 하지 않기 때문이다. 이 부분에 대하여 UDPTCP Traffic을 밀어낼 가능성이 있다.
  • 관련 연구 분야로는 UDP 트래픽으로 dsl한 인터넷 마비 방지하는 혼잡제어 방식이 있다.

 

- 명확한 혼잡 제어 통보 (Explicit Congestion Notification, ECN)

  • IP헤더의 Tos 필드에 2비트가 Congestion을 나타내기 위해 네트워크 라우터에 의해 값이 저장된다.
  • , 네트워크 장비(라우터)Congestion을 감지하고 호스트에게 알려준다.
  • 주로 심각한 상황이 되면, 송신측의 혼잡을 알리기 위해 수신측에서 ACK세그먼트의 ECE 비트를 설정한다.

 

 

 

 

 

 

 

연결 설정

 

- 송신자와 수신자는 세그먼트를 교환하기 전에 연결 설정(Handshaking)을 한다.

 

- TCP 변수 초기화 : 순서번호, 버퍼 및 흐름제어 정보(수신윈도우)

 

- 클라이언트 : 연결 요청


Socket clientSocket = new Socket("hostname", "port number");



- 서버 : 클라이언트 연결 승인


Socket connectionSocket = welcomeSocket.accept();



 

 

3-Way Handshake

 

- 1단계 : 클라이언트는 SYN 비트 플래그(flag)를 설정하고 서버에 SYN 세그먼트를 전송한다. 최초의 순서번호를 기술한다.

* SYN 세그먼트 : 연결 요청 때에만 세그먼트의 헤더에 flag필드에 1비트의 값을 가진 세그먼트로, 데이터는 없다.

 

- 2단계 : 서버는 SYN 세그먼트를 받고, 클라이언트에게 SYNACK 세그먼트를 전송한다. 서버는 TCP 버퍼와 변수를 할당한 뒤, 서버의 최초 순서번호를 기술한다.

 

- 3단계 : 클라이언트는 SYNACK를 받고, ACK 응답을 서버에게 보낸다. 클라이언트는 TCP 버퍼와 변수를 할당한다. ACK응답에는 데이터가 포함될 수 있다.

 





 

 

 

연결 해제

 

- 클라이언트와 서버 각각 서로에게 FIN 세그먼트를 전송한다.

 

- FINACK는 하나의 세그먼트에 같이 포함될 수도 있다.

 

- 클라이언트가 연결을 종료하는 경우를 가정해본다.


ClientSocket.close();



- 1단계 : 클라이언트는 세그먼트 헤더에 FIN비트 플래그(flag)를 설정하고, 서버에 FIN 세그먼트를 전송한다.

 

- 2단계 : 서버는 FIN 세그먼트를 받고, ACK 세그먼트를 전송한다. 연결을 종료하고, FIN 세그먼트를 클라이언트에게 전송한다.

 

- 3단계 : 클라이언트는 서버로부터 FIN 세그먼트를 받고, ACK 세그먼트를 서버로 전송한다. 이후 대기 시간(timed wait)동안 기다린 후, 연결 종료된다.

 

- 4단계 : 서버는 클라이언트로부터 ACK 응답을 받고, 연결 종료된다.

 







 

+ Recent posts