본문 바로가기
CS

TCP/IP - 트랜스포트 계층

by 유서담 2023. 8. 23.

트랜스포트 계층은 애플리케이션 계층과 인터넷 계층 사이에 위치한다. 

인터넷 계층의 역할이 데이터를 수신지 컴퓨터까지 전달하는 것이고, 트랜스포트 계층의 역할은 컴퓨터가 받은 

데이터를 애플리케이션까지 전달하는 것이다.

 

포트 번호로 애플리케이션을 구분.

 

트랜스포트 계층의 TCP 프로토콜 : 데이터의 정확한 전달을 중시.

  데이터가 정확하게 전달되도록 전송 속도를 조절하거나 도달하지 않은 데이터를 재전송한다.

 

UDP : 데이터의 전송 속도를 중시

VoIP , 동영상 스트리밍 같은 실시간 전송속도를 중시하는 서비스는 UDP를 사용한다

 

 

포트 번호

 

패킷들은 애플리케이션 계층에 있는 애플리케이션들에게 각각 전달되야 하는데 어느 애플리케이션으로 보내져야 할지는

포트 번호로 알 수 있다.

 

 

포트 번호의 범위

웰 노운 포트 : 서버 프로그램이 수신 대기할 때 사용하는 포트

 

레지스터드 포트 : 밴더가 할당받아 사용하는 포트

 

다이나믹 포트 : 클라이언트 프로그램이 사용하는 포트

 

주요 웰 노운 포트

포트 번호 대응하는 프로토콜
20번 FTP (액티브 모드에서는 데이터 커넥션,
패시브 모드에서는 랜덤 포트를 사용함)
21번 FTP (컨트롤 커넥션 )
22번 SSH (원격 제어, 보안 기능)
23번 Telnet (원격 제어)
25번 SMTP (이메일 전송)
80번 HTTP (웹)
110번 POP3 (이메일 수신)
143번 IMAP4(이메일 수신, 보관기능)

 

사용하는 포트 번호는 그때그때 다르다

 

포트 번호와 IP 어드레스의 조합으로 상대방을 식별

 

 

클라이언트의 IP 어드레스와 포트를 조합해서 기억해둔다

 

 

TCP가 하는일

 

TCP(Transmission Control Protocol)는 트랜스포트 계층의 프로토콜의 하나로서 정확한 데이터 전달이 필요한 통신에 사용

데이터를 세그먼트라는 단위로 분할, 전송 속도를 조정하고 제대로 전달되지 않았을 때 재전송

 

 

TCP 헤더의 구조

송신지 포트 번호 (source port) 수신지 포트 번호 (destination part)
일련번호 (sequence number)
확인 응답 번호 (acknowledgement number)
데이터옵셋
(data offset)
예약
(reserved)
컨트롤비트
(control bits)
윈도우 사이즈
(windows size)
체크섬 (checksum) 긴급 포인터 (urgent pointer)
옵션 설정 (options) 패딩 (padding)
데이터 본체

 

컨트롤비트 : 현재의 통신 상태를 표현하는 플래그 역할을 하고, 통신 상대에게 정보 전달하여 TCP 통신을 제어하는 용도로 사용.

 

9개의 플래그 각가은 1비트 크기를 차지하여 ON/OFF 두 가지 상태를 표현

더보기

플래그의 종류

 

CWR / ECE / URG / ACK / PSH / RST /SYN / FIN

 

ACK : 이전 동작을 확인했다는 것을 알려준다. 확인 응답 번호와 조합해서 사용.

TCP 통신은 커넥션 연결에서 시작한다

커넥션을 맺는 과정은 3단계로 진행되는데 이것을 3방향 핸드셰이크라고 한다.

 

커넥션을 맺을 때 송수신 측은 원활한 통신을 위해 일련번호와 최대 세그먼트 크기를 사전에 조율한다

= 제시한 MSS 크기가 송신 측과 수신 측이 다를 경우 작은 값을 따라간다.

 

송신을 하고 수신 측에서 응답이 일정시간 지난 후에도 오지 않으면 같은 데이터를 재전송을 한다.

 

데이터에 대한 응답을 받은 후에 다음 데이터를 보내는 방식은 통신이 정상적으로 완료되기까지 다소 많은 시간이 소요됨

응답을 기다리지 않고 연속된 데이터를 몰아서 보내면 전송 속도를 더 빠르게 향상시킬 수 있다.

 

 

위에서 말한 것처럼 연속해서 몰아 보내는 데이터의 양이 너무 많으면 수신 측이 제때 처리하지 못할 수 있다

그래서 수신 측은 수신한 데이터를 일시적으로 보관할 수 있는 버퍼(buffer) 라는 저장 영역을 갖고 있다

수신 측은 TCP 헤더의 윈도우 사이즈에 이 버퍼의 크기를 설정하고 송신 측에 통보함으로써 어느 정도의 크기까지 받아 낼 수 있는지를 알려주게 된다

 

= 버퍼에 쌓인 데이터를 순차적으로 처리하는데 수신 측 컴퓨터가 느려서 처리속도가 느리다면 응답을 보낼 때 윈도우 사이즈를 설정하여 현재 어느 정도까지 수신할 수 있는지를 수시로 알린다. 이것을 흐름 제어(flow control) 라고 한다

 

>> 버퍼가 가득차면 윈도우 사이즈가 0으로 설정되고, 전송 재개할 시점을 알기 위해 탐색 패킷 혹은 윈도우 프로브 라고 하는 패킷을 보낸다.

 

=== 버퍼에 빈공간이 있더라도 네트워크 경로가 혼잡한 상태라면 통신 속도를 낮춰야 하는 경우도 있다.

이때 인터넷 계층의 헤더 안에 혼잡 플래그가 On 설정 및 송수신 양측이 ECE 플래그와 CWR 플래그를 사용해서 통신속도를 조절하게 된다.

 

 

UDP ( User Datagram Protocol )

 

TCP에 비해 간단한 프로토콜로서 단순히 데이터를 보내는 역할만 한다.

통신 과정에서 데이터의 손실이 발생할 수 있는데 VoIP, 동영상 스트리밍 서비스는 일부 데이터가 누락되거나 왜곡되더라도 큰 문제가 없기 때문에 UDP를 주로 사용

 

 

UDP 헤더

송신지 포트 번호 (source port) 수신지 포트 번호 (destination port)
패킷 길이 (UDP length) 체크섬 (checksum)
데이터 본체 (data)

 

브로드캐스트 및 멀티캐스트 : 하나의 패킷을 여러 수신지에 전달하는 기능. ( TCP에는 없는 기능 )

 

특히, 브로드캐스트는 파일공유나 DHCP(자동으로 IP구현)와 같이 네트워크 내의 정보를 교환할 때 사용.

 

실시간 처리가 필요한 온라인 게임에서는 전송 속도가 우선인 UDP를 사용하지만, 데이터 전송의 신뢰성도 중요하다

애플리케이션 계층에서 흐름 제어(flow control)나 혼잡 제어(congestion control)를 구현해 부족한 신뢰성을 보완한다.

'CS' 카테고리의 다른 글

TCP/IP - 라우팅과 인터넷계층  (0) 2023.08.24
TCP/IP - 네트워크 서비스와 애플리케이션 계층  (0) 2023.08.23
TCP/IP - 컴퓨터 네트워크  (0) 2023.08.22