진짜 개발자
본문 바로가기

CS(Computer Science)/Network

Network - TransPort 계층 - 수정중(Segment 헤더 구조만 수정하면 됨)

728x90

TransPort 계층이란?

- 서로 다른 호스트(PC)에서 동작하는 어플리케이션 프로세스들 간의 논리적 통신을 제공한다

  (어플리케이션 관점에서프로세스들이 동작하고 있는 호스트(PC)들이 직접 연결되어 있는것처럼 보인다는것을 의미)


트랜스포트계층 프로토콜은 

  송신측 : 어플리케이션계층의 프로세스에서 네트워크 계층까지 메시지를 운반하며(다중화)

  수신측 : 네트워크계층에서 어플리케이션 계층까지 메시지를 운반한다(역다중화)


- 송신측 트랜스포트 계층에서는 어플리케이션 계층으로부터 받은 메시지를 세그먼트로 변환한다

  => 메시지를 작은 조각으로 분할하고 각각의 세그먼트에 트랜스포트 계층 헤더를 추가


- 트랜스포트 계층은 직접 프로세스에게 메시지를 전달하지 않고 중간의 소켓에게까지만 메시지를 전달한다. 


소켓

- 하나의 호스트에서 여러개의 프로세스가 동작중일때 각각의 프로세스를 구분하여 메시지를 전달하기 위해 소켓을 사용한다

- 소켓을 구별하기위해 Port를 사용한다 즉 각소켓은 Port번호를 할당 받는다

- TCP 소켓 또는 UDP소켓으로 구분된다.

- 프로세스 : 집 , 소켓 : 문

- 소켓은 어플리케이션 계층과 트랜스포트 계층간의 인터페이스이다




Network 계층과 TransPort 계층

- Network 계층은 서로 다른 "호스트" 사이의 논리적 통신을 제공하며


 - TransPort 계층은 서로 다른 "호스트에서 동작하는 프로세스"사이의 논리적 통신을 제공한다.




전송단위

- 세그먼트(Segment)



Network 계층의 IP(인터넷 프로토콜)프로토콜

- IP프로토콜은 네트워크간 세그먼트를 전달하면서 최대한 노력하지만 어떤 보장도 하지 않는다

  1) 세그먼트의 전달을 보장하지 않는다.

  2) 세그먼트가 순서대로 전달되는 것을 보장하지 않는다.

  3) 내부 데이터의 무결성을 보장하지 않는다.

- 때문에 IP를 비신뢰적인 서비스라고도 한다.



TCP Segment 구조

 필드

설명 

 Header

TCP Header 

 Data

어플리케이션 계층의 메시지

1. Source Port

- 발신지 포트주소

2. Destination Port

- 수신지 포트주소

3. Sequence Number

- 패킷이 분실되거나, 세그먼트 순서가 어긋나게 도착할 수 있어 sequence Number를 이용하여 데이터를 올바른 순서로 유지

4. Response Number

5. Header Length

-

6. Reservation

-

7. Control Flag

-

8. Window   

-

9. TCP Checksum

-

10. Emergency Data Point

-

11. Option

-

12. Data

- 송신할 데이터로 어플리케이션 계층에서 생성된 메시지이다.



프로토콜

*UDP와 TCP 공통 기능

- "호스트대 호스트 전달"을 "프로세스대 프로세스 전달"로 확장 (트랜스포트계층 다중화와 역다중화)

- 무결성 검사를 제공


1) TCP

- 신뢰적인 서비스이다.

- 세그먼트가 순서대로 정확하게 전달되도록 한다 즉 IP의 비신뢰적인 서비스를 프로세스간 신뢰적인 데이터 전송서비스로 만든다

- 네트워크 트래픽 조절(혼잡제어)

- 흐름제어


2) UDP

- 비신뢰적인 서비스이다.

- UDP와 TCP의 공통기능이 UDP의 유일한 2가지 기능이다.


*UDP 동작과정

1) 세그먼트가 호스트에 도착한다

2) 트랜스포트 계층은 세그먼트헤더의 목적지 PORT를 확인한다

3) 목적지 PORT에 상응하는 소켓으로 세그먼트를 전달한다

4) 세그먼트 헤더는 분리되고 세그먼트의 데이터가 소켓을 통해 해당 프로세스로 전달된다.



트랜스포트계층의 다중화와 역다중화

다중화

- 송신측 호스트의 트랜스포트 계층에서 소켓으로 부터 데이터를 받아 세그먼트화하여 네트워크 계층으로 전달하는 것


다중화 조건

1) 소켓은 유일한 식별자를 가져야 한다 (수신 호스트에서 동작중인 여러 프로세스중 하나를 식별할 수 있어야 하기 때문)

2) 각 세그먼트에는 목적 소켓을 가리키는 특별한 필드를 가진다.

 (세그먼트는 어플리케이션계층에서 생성된 메시지를 여러개의 작은 세그먼트로 분리된 것이므로 세그먼트마다 목적지를 

가리키는 필드가 존재해야 한다.)


역다중화

- 수신측 호스트의 트랜스포트계층에서 적절한 소켓으로 세그먼트를 전달하는 것



수신측 호스트가 수신한 트랜스포틍 계층의 세그먼트를 적절한 소켓으로 향하게 하는 방법

스트(PC)에서 3개의 네트워크 프로세스(Telnet, FTP, HTTP)가 동작중이라고 하자

     하위 계층(Network계층)에서 메시지를 수신했을 때 이 3개의 네트워크 프로세스(Telnet, FTP, HTTP)  

     프로세스중 하나의 프로세스에게 데이터를 전달해야 할 때 이를 어떻게 수행하는지 가정하여 설명하겠다.