[Network] 전송 계층

 

네트워크 보안


(1) 전송 계층 (4계층 / Transport Layer)

1-1. 전송 계층에 대한 이해

  • 4계층 대표 프로토콜은 TCP

  • TCP도 주소를 가지고 있으며, 이를 포트라 함

  • MAC 주소가 네트워크 카드의 고유 식별자이고, IP 시스템의 논리적 주소라면, 포트는 시스템에 도착 후 패킷이 찾아갈 응용 프로그램과 통하는 통로 번호 

 

포트는 0~65535 (2**16 -1)번까지 존재하며, IP나 MAC 주소처럼 출발지와 목적지에 응용 프로그램별로 포트 번호를 가지고 통신한다.

 

0~1023번 (1,024개)을 잘 알려진 포트라고 부른다.

 

보통 0번 포트는 사용하지 않으며, 1023번 포트까지는 대부분 고유 용도가 있다.

 

 

[표 1] 주요 포트와 서비스

포트 번호 서비스 포트 번호 서비스
20 FTP-Data 80 HTTP
21 FTP 110 POP3
23 Telnet 111 RPC
25 SMTP 138 NetBIOS
53 DNS 143 IMAP
69 TFTP 161 SNMP

 

표에 나열되어 있는 것은 대부분 목적지 포트이다.

 

목적지 포트와 달리, 출발지 포트는 보통 1024번부터 65535번 사이에서 사용하지 않는 임의의 포트를 응용 프로그램별로 할당하여 사용한다.

 

예로 클라이언트가 인터넷에 존재하는 웹 서버에 접속한다고 가정하면, 웹 서버의 서비스 포트는 보통 80번이니 패킷 구조는 다음과 같다.

 

[그림 1] 클라이언트가 웹 서버에 접속할 때 패킷 구조

 

출발지 포트는 시스템에서 임의로 정해지게 되니 알 수가 없다.

 

대략 3000번대의 포트가 임의로 할당되면 다음과 비슷하다.

 

[그림 2] 시스템에서 임의로 포트를 할당한 출발지 패킷 구조


(2) 전송 계층 프로토콜

  • 전송 계층은 OSI 7계층에서 4번째 계층으로, 응용 프로그램 주소를 포트 번호로 이용해 통신 하는 프로토콜

 

2-1. TCP

  • 전송 계층에서 동작하는 연결 지향형 프로토콜

  • 데이터의 흐름을 관리하고 데이터가 정확한지 확인

 

2-1-1. TCP의 특징

  • 높은 신뢰성

  • 가상 회선 연결 방식

  • 연결 설정 / 해제

  • 데이터 체크섬

  • 시간 초과와 재전송

  • 데이터 흐름 제어

 

TCP는 일단 연결이 설정되면 해제되기 전까지 송신 시스템과 목적지 시스템이  계속해서 대화를 시도한다.

 

송신 시스템은 보내는 시스템에 데이터를 전송, 목적지 시스템은 데이터를 받은 경우 이에 응답하도록 되어 있다.

 

만약 목적지 시스템이 받은 데이터에 응답을 하지 않을 경우, 송신 시스템은 일정 시간을 대기한 후 같은 데이터를 재전송한다.

 

이러한 통신 방식을 사용하기 때문에 보내는 데이터에 대한 신뢰성이 확보된다.

 

 

다음은 TCP 패킷의 구조이다.

 

[그림 3] TCP 헤더

 

[표 2] TCP 패킷 내용

필드 이름 길이 내용
S.Port 2Bytes 패킷의 출발지 포트 번호를 가리키며 0~65535 값 중 하나
D.Port 2Bytes 패킷의 목적지 포트 번호
Seq.Number 4Bytes 패킷의 순서 값
Ack.Number 4Bytes 통신 상대의 패킷 순서 값
Data Offset 4bits

TCP 패킷 헤더 길이를 나타내는데, 32bits (4Bytes)가 몇 행인지 가리킴

최소 값은 5

Reserved 6bits 나중에 필요할 때 사용하려고 남겨둔 공간
Control Bits 6bits

URG (Urgent) : 1이면 헤더 마지막 필드인 긴급 포인터 내용 실행

ACK (Acknowledgement) : 1이면 확인 번호 필드가 유효

PSH (Push) : 1이면 송신자에게 높은 처리율 요구

RST (Reset) : 1이면 TCP 연결 다시 설정

SYN (Synchoronize) : 1이면 연결 요청과 설정, 확인 응답에서 순서 번호 동기화

FIN (Finish) : 1이면 TCP 연결 종료

Window 2Bytes

TCP는 흐름 제어 때 슬라이딩 윈도우 & 혼잡 윈도우 방법 사용

슬라이딩 윈도우 : 데이터를 한 번에 처리할 수 있는 버퍼의 용량을 의미하는 윈도우 개념 사용, 송신 시스템이 전송한 전체 세그먼트에 대한 확인 메시지 수신하기 전에 다른 세그먼트를 전송하도록 도와줌

 

혼잡 윈도우 : 네트워크 혼잡 문제 해결을 위해 송신 시스템이 사용하는 방법, 네트워크 혼잡 발견 시에 보내는 데이터 양을 조절해 줄이고 혼잡이 줄어들면 다시 원래 보내던 만큼 데이터 양을 늘림

Checksum 2Bytes 데이터 오류 검출을 위한 값
Urgent Pointer 2Bytes Control Bits가 URG 경우, 현재 전송되는 데이터와 관계없는 TCP 데이터를 보내 우선 처리시에 사용, 이때 우선 처리하려는 긴급 데이터의 마지막 바이트 위치를 Urgent Pointer로 나타냄
Options 가변 옵션의 종류와 길이, 데이터를 저장
Padding 가변 옵션이 32bits가 안 되면 나머지 비트를 0으로 채움
Data 가변 전송하고자 하는 데이터를 저장

 

TCP가 연결 지향형 프로토콜이라는 의미는 패킷을 주고 받기 전에 미리 연결을 맺어 가상 경로를 설정하여 이 가상 경로를 통해 모든 데이터가 전송 된다는 것이다.

 

가상 경로를 설정하려면 연결을 설정하고 종료하는 두 과정이 필요한데, 연결을 설정하는 과정을 흔히 '3-Way 핸드셰이킹'이라고 한다.

 

[그림 4] TCP에서 연결 생성 과정

 

 

1) 두 시스템이 통신을 하기 전의 클라이언트는 포트가 Closed 상태이며, 서버는 해당 포트로 항상 서비스를 제공할 수 있는 Listen 상태이다.

 

2) 클라이언트가 처음 통신을 하고자 하면, 임의의 포트 번호가 클라이언트 프로그램에 할당되고 클라이언트는 SYN Sent 상태가 된다. (서버에 연결하고 싶다는 일종의 표시)

 

3) 서버는 클라이언트 연결 요청을 받고, SYN Received 상태가 되며 클라이언트에 연결을 해도 좋다는 의미로 SYN + ACK 패킷을 보낸다.

 

4) 마지막으로 클라이언트는 연결 요청에 대한 서버 응답을 확인했다는 표시로 ACK 패킷을 서버로 보낸다.

 

 

TCP에서의 연결 종료 과정은 연결 생성 과정보다 중요성이 조금 떨어지지만 역시 중요하다.

 

[그림 5] TCP에서 연결 해제 과정

 

1) 두 시스템이 통신하는 중에는 클라이언트와 서버 모두 Established 상태이다.

 

2) 통신을 끊고자 하는 클라이언트가 서버에 FIN 패킷을 보낸다. (이때, 클라이언트는 Close Wait 상태가 됨)

 

3) 서버는 클라이언트 연결 종료 요청을 확인하고, Close Wait 상태가 된다.

 

클라이언트에 응답으로 ACK 패킷을 보낸 뒤 서버도 클라이언트의 연결을 종료하겠다는 의미로 FIN 패킷을 보낸다.

 

4) 마지막으로 클라이언트가 서버로부터 FIN 패킷을 받으면 Closed 상태가 되고 클라이언트는 연결 종료 요청에 대한 서버의 응갑을 확인했다는 의미로 ACK 패킷을 서버에 보낸다.

 

이 패킷을 받은 뒤 서버는 Closed 상태가 된다.

 

 

2.2 UDP

  • TCP와 달리 비연결 지향형 프로토콜

  • 상대방이 보낸 응답을 확인하지 않고, 송신 시스템이 전송하는 데이터에 대한 목적지 시스템의 확인 절차를 생략하므로 네트워크에 부하를 주지 않는 장점을 지님

  • 그러나 데이터 자체의 신뢰성이 없으므로 수신한 데이터는 무결성 보장을 받지 못함

 

2-2-1. UDP의 특징

  • 비연결 지향형

  • 네트워크 부하 감소

  • 비신뢰성

  • 전송된 데이터의 일부가 손실됨

 

UDP는 송신 시스템과 목적지 시스템 사이의 상호 통신이 이루어지지 않아 전송되는 데이터 중 일부가 손실되는 경우 손실 데이터에 대한 재전송 요구를 하지 않는다.

 

손실 된 데이터는 그대로 둔 채 나머지 데이터를 전송하며, UDP는 비연결 지향형 프로토콜이라 송신 시스템은 손실된 데이터 정보를 알 수 없어 손실 데이터를 재전송하지 않는다.

 

최근 네트워크 신뢰도가 매우 높아져 수신된 데이터 무결성을 보장받지 못해도 UDP를 사용하면 효율성 높은 데이터 전송을 제공하는 경우가 많아 점차 많이 사용된다.

 

 

다음은 UDP 패킷 구조이다.

 

[그림 6] UDP 패킷 구조

 

[표 3] UDP 패킷 내용 

필드 이름 길이 내용
S.Port 2Bytes 패킷의 출발지 포트 번호로, 0~65535 값 중 하나
D.port 2Bytes 패킷의 목적지 포트 번호
Length 2Bytes UDP 헤더와 데이터 필드 포함 전체 패킷 길이
Checksum 2Bytes 데이터 오류 검출을 위한 값
Data 가변 전송하고자 하는 데이터 저장

# Reference

 

https://www.hanbit.co.kr/store/books/look.php?p_code=B2228799661

'Network' 카테고리의 다른 글

[Network] 응용 계층  (1) 2020.03.19
[Network] 네트워크 계층  (0) 2020.03.19
[Network] 데이터 링크 계층 (DataLink Layer)  (0) 2020.03.18
[Network] 물리 계층 (Physical Layer)  (0) 2020.03.18
[Network] 네트워크 보안 기초  (0) 2020.03.11

+ Recent posts