본문 바로가기

교육/Netwrok

Day 58 (Transport Layer)

반응형

<목차>

1. Transport layer

2. 전송서비스와 규칙

3. 전송 과정

4. Transport layer와 Network layer의 차이

5. Multiplexting/Demultiplexing

6. Transport layer에서 demultiplexing

  1) Transport  layer에서 demultiplexing을 위한 요구사항

  2) UDP에서의 demultiplexing

  3) TCP에서의 demultiplexing

7. UDP

  1) UDP의 특징

  2) UDP의 header


1. Transport layer

protocol은 네트워크에 대한 일련의 규칙으로서 UDP, TCP가 있다. Application개발자가 Application개발시에 정한다.

UDP는 비 신뢰적 비 연결지향 서비스로 data전달에 최선을 다하지만 어떠한 보장도 안하기 때문에 best-effort delivery service라고도 한다.

TCP는 신뢰적 연결지향 서비스로  혼잡제어, 흐름제어, 연결지향하는 서비스이다.

TCP/UDP 모두 최대 지연시간과 전달 대역폭은 Packet망 network자체의 문제이기 때문에 보장하지 못한다.

 

2. 전송서비스와 규칙

서로 다른 host에 사용하는 application process간에 논리적 통신을 제공한다. transport protocol은 end시스템간의 전송으로 network edge부분에서만 사용한다.  network edge는application, transportlayer로 구성되고,  network core는 physical layer~network layer까지 이다.

 

3. 전송 과정

Event : 가만히 있는 상태에서 어떠한 상태변화가 생기는 것

Action : Event가 발생하면 하는 행위

송신측의 Transport layer는 Application으로 부터Message를 받는 Event가 발생한다. Message를 Segment로 변환하는 Action을 한다. Segment를 Network layer로 전송한다.

수신측의 Transport layer는 Network layer로 부터 Segment를 전달 받는 Event가 발생한다. 전달받은 Segment를 Message로 변환하는 Action을 한다. Message를 Application으로 전달한다.

수신측에서 전달받은 Segment를 Message로 변환하는 Action을 추출(Extract)라고 하며, Message를 Application으로 전달하는 것을 전달(Delivery)라고 한다.

 

4. Transport layer와 Network layer의 차이

Network layer는 Process와는 무관하게 host간에 논리적 통신을 제공한다.

Tranport layer는 Process간에 논리적 통신을 제공한다.Network layer장비에 부하 또는 지연을 줄이기 위해 신뢰적인 전송을 제공한다. 하지만 Packet망이기 때문에 지연이나 대역폭에 대한 보장은 불가능 하다.

 

5. Multiplexting/Demultiplexing

Multiplexing은 socket들로 부터 data를 모으고 각 data의 header정보로 캡슐화 하여 하위 layer로 전달하는 것을 의미한다. Demultiplexing은 segment의 data를 올바른 socket으로 전달하는 것을 의미한다.

 

6. Transport layer에서 demultiplexing

  1) Transport  layer에서 demultiplexing을 위한 요구사항

각 socket은 유일한 식별자를 가진다. 각 segment는 적절한 socket을 가르키는 source와 destination의 port번호가 적힌 특별한 field를 갖는다. 0~1023까지의 port는 well-know port라고하는 server로서 사용할 지정된 port이다.

Header의 길이는 프로토콜에 따라 다르다. segment의 1줄의 길이는 4 byte인데 UDP는 8 byte로 header는 2줄로 구성되고, TCP는 20 byte로 header가 5줄로 구성된다.

segment가 host에 도착하면 Transport layer는 목적지의 port #를 검사하여 이에 상응하는 socket으로 data를 전달한다.

 

  2) UDP에서의 demultiplexing

UDP socket은 목적지의 IP와 목적지의 Port #로 구성된 두 요소된 집합에 의해 식별된다. 목적지를 어디로 할지에 대한 정보를 전부 기억할 필요가 없게 전부 송신하고 통신을 끝낸다. 하지만 서버는 클라이언트와 프로세서를 1:1로 하기 때문에 이에 상응하는 따라서 목적지의 정보만 알아도 통신에 지장이 없다.

 

  3) TCP에서의 demultiplexing

TCP socket은 source IP, source port #, destination IP, destination port #에 의해 식별된다. 각 socket들을 이용해 object가 새로운 TCP connection을 한다. 서버에서 프로세스가 복사되어 여러개 띄우는 것을 fork라고 한다. 서버는 클라이언트와 프로세서를 1:1로 하기 때문에 이에 상응하지만 같은 포트 넘버를 사용하기 때문에 source의 정보도 가지고 있는 것이다.

non-persistent 연결은 연결시마다 소켓을 전부 새로 생성한다. persistent연결은 한번 연결을 하면 통신이 종료되기 전까지 소켓을 유지한다.

persistant연결이 유지되면 process의 idle time이 증가하여 리소스가 낭비되는 단점이 발생한다. 이를 해결하기 위해 multi thread system 혹은 shared server system이라고 하는 방식을 사용한다. multi thread system을 이용하면 하나의process가 connection만큼의 socket을 가져 각각 다른 응답을 하는 것이다.

 

Q? non-persistent 연결은 UDP, persistent 연결은 TCP인가? A! nope. tcp가 udp처럼 하는게 non-persistent방식이다.

 

7. UDP : user datagram protocol

1) UDP의 특징

- 연결 설정이 없다 ≒ 연결상태가 없다.
연결 상태를 유지하기 위한 정보를 교환하는 예비 동작 없이 전송함으로서 지연이 없고, 리소스를 적게 사용해 많은 application을 수용할 수 있다. 하지만 best-effort로 보장성이 전혀 없기 때문에 손실이 가능하고, 전송순서가 바뀔 가능성이 있다. 또한 통신 시 마다 지속적으로 새로운 연결을 만들어야한다.

- header가 작다.
UDP는 header가 8 byte인 반면 TCP는 20 byte다.

- 혼잡제어 하지 않는다.

네트워크 혼잡도를 고려하지 않고 application이 요구하는 전송을 전송량에 제한없이 전송한다.

 

2) UDP의 header

DNS나 SNMP와 같은 application이 신뢰성을 제공한다면 UDP상에서도 신뢰성 있는 통신이 가능하다.

header의 검사합은 checksum이라고 하는데 전송된 segment의 데이터 손상에 대한 error를 검출하기 위해 사용한다.

segment의 모든 content는 순서에 따라 16bit씩 나눠 전부 더한다. 그 합을 sum이라고 한다.

overflow bit는 warparound로 이용하는 경우가 있다. 사전에 application 개발시 16bit 전에 끝나면 패딩을 어떤 값을 어디에 넣을건지와 overflow bit에 대해 버릴것인지 warparound할것인지를 정한다.

checksum은 sum의  2의 보수다. 수신측에서 받은 segment의 sum과 송신측에서 보낸 checksum을 합하여 전부 1이면 정상 segment이고 아니라면 손상된 segment다.

 

예시파일 :

bst09_육경득_csum.txt
0.00MB

 

반응형

'교육 > Netwrok' 카테고리의 다른 글

Day 58 (Wireshark)  (0) 2020.02.11
Day 58 (패킷)  (0) 2020.02.11
Day 55 (NAT 네트워크 구성)  (0) 2020.02.06
Day 55 (네트워크)  (0) 2020.02.06
Day 54 (Network)  (0) 2020.02.05