Search
🏫

[정보 통신망] 9. TCP/IP 전송 계층

[정보 통신망] 13. 네트워크 보안
CS
Network
2023/06/1115:01
[정보 통신망] 13. 네트워크 보안
CS
Network
2023/06/1115:01

1. 전송 계층

1.1. 전송 계층 개요

TCP/IP 기본 구조
전송 계층
시스템 종단에서 투명한 데이터를 양방향으로 전달하는 계층
네트워크 계층은 데이터 전송에 대한 신뢰성을 보장하지 않음
오류를 점검하여 오류 발생시 재전송을 요청함으로써 신뢰성 제공

1.2. 전송 계층 프로토콜

인터넷에서 가장 많이 사용하는 프로토콜
UDP (User Datagram Protocol)
TCP
연결형 통신 vs 비연결형 통신

2. UDP

2.1. UDP 비연결형 서비스

UDP
User Data Protocol
전송 계층 프로토콜
process-to-process protocol
cf) IP - host-to-host protocol
비연결성과 비신뢰성
기본적인 IP 데이터 전달 서비스에 프로세스 간 통신이 추가된 형태
연결성 보장과 신뢰적 전송에 소요되는 오버헤드가 없음
간단한 메세지 송수신에 유리
응용 프로세스의 데이터 전송
다임 프로토콜을 이용하여 데이터를 다른 프로세스에 전송 가능
UDP - 비연결형, 비신뢰성 전송 서비스
TCP - 연결형, 신뢰성 전송 서비스
포트 번호 사용 (프로세스 구별하기 위함)
UDP의 특징
데이터 손실 가능성 존재
최종 목적지의 데이터 수신 여부 확인 X
데이터 순서 틀릴 가능성 존재
메세지 도착 순서 재조정 X
수신자 처리 용량을 초과하는 데이터 발생 가능성 존재
호스트 사이에 데이터 흐름 제어 없음
UDP = 비연결형 IP 전달 서비스 + 검사합(checksum) 기능
UDP의 장/단점
장점 - TCP보다 데이터 전송이 빠르고, 응용 프로그램이 간단해짐
단점 - 메세지 손실, 중복 수신, 수신 지연, 잘못된 순서 등을 처리하기 위한 신뢰성 제어 기능 제공 필요

2.2. UDP 사용자 데이터그램

UDP 데이터그램 형식
UDP 전체 길이 = 헤더 길이 + 데이터 길이
UDP 검사 합 = 데이터그램 전체의 오류 검사용

2.3. UDP 가짜 헤더

UDP 가짜 헤더 (pseudo header)
검사합을 계산하기 위해 12바이트 가짜헤더 사용
UDP 데이터그램이 정확히 목적지에 도착 하였는지 2중으로 인증하기 위함
IP 주소 확인, 오류 검증(검사합)
UDP 헤더는 단지 포트번호만 가지고 있고 IP 주소 정보는 없음
가짜 헤더의 값은 IP 데이터그램에서 확인 가능
가짜 헤더 특징
데이터그램이 16비트의 배수가 되도록 0으로 패딩한 후 전체 UDP 데이터그램의 검사합을 계산
가짜 헤더와 패딩은 실제로 전송되지 않아 길이에 포함 안됨
수신자는 검사합 필드를 0으로 저장하여 가짜 헤더, UDP 헤더 및 사용자 데이터를 모두 포함하여 검사합 계산

2.4. UDP 포트 번호

process-to-process 통신
포트 번호
서버 프로세스는 잘 알려진 포트 번호 사용
클라이언트 프로세스는 임시 포트 번호 사용
UDP Well-known ports

3. TCP

3.1. 전송제어 프로토콜

TCP 정의
Transmission Control Protocol
전송 계층 프로토콜
process-to-process protocol
연결 지향 전송 서비스
연결 설정 - 데이터 전송 - 연결 해제
TCP 연결 식별자: 송신측 TCP 종점 주소, 수신자 TCP 종점 주소
신뢰성
흐름제어 (sliding window protocol)
오류제어 (응답 패킷, 시간초과, 재전송 방식)
신뢰성이 요구되는 응용
UDP: 응용 프로그램에서 신뢰성 보장
TCP: 전송계층에서 신뢰성 보장
방대한 양 데이터 전송 → TCP 사용

3.2. 신뢰성 제공 방법

연결 지향 데이터 전송
Segment 단위의 전송 (MSS: Maximum Segment Size)
흐름 제어 (flow control, sliding window 사용)
오류 제어 (응답 패킷, 시간 초과, 재전송 방식)
타이머 관리
checksum, 순서 보장, 중복 패킷 방지
예시) 오류제어 - 재전송 타이머 이용
예시) 흐름제어 - 한정된 버퍼 용량으로 흐름 제어 (슬라이딩 윈도우)

3.3. TCP 세그먼트 형식

TCP Segment
헤더 (20~60 bytes) + 데이터
주요 내용
발신지 포트 (2바이트)
발신지 TCP 사용자 프로세스 식별
목적지 포트 (2바이트)
목적지 TCP 사용자 프로세스 식별
순서 번호 (4바이트)
데이터 필드의 첫번째 데이터 바이트의 순서번호
응답 번호 (4바이트)
송신측으로부터 받은 세그먼트에 대한 응답
바로 다음에 받기를 기대하는 순서번호를 의미
순서 번호가 x인 세그먼트를 수신하면 응답번호는 x+1을 사용
헤더 길이 (HLEN; 4비트)
4 비트 단위로 표시되는 헤더의 길이
5~15 사이의 값
예약 (Reserved; 6비트)
제어 (flag bits; 6비트)
URG: 긴급 포인터 (urgent pointer) 필드가 유효함을 표시함
ACK: 응답번호가 유효함을 표시함
PSH: 가능한 빨리 현재 세그먼트를 상위 계층에 전달해야 함
RST: 연결을 재설정 함
SYN: 연결을 초기화하기 위해 순서번호를 동기화함
FIN: 연결을 해제시키기 위해 현재 세그먼트가 마지막 데이터임을 표시함
윈도우 크기 (2바이트)
흐름제어를 위한 윈도우 크기를 명시
검사합
오류제어를 위한 검사합 부분
긴급 포인터
URG flag = 1 일때 긴급 데이터의 마지막 바이트 순서 번호 = 긴급 포인터 + 순서 번호
옵션 (0~40 바이트)
MSS: Maximum Segment Size
윈도우 크기를 증가시키기 위한 값
timestamp 등

3.4. TCP 연결형 서비스

TCP 연결
연결 지향 프로토콜
데이터를 전송하기 전에 발신자와 목적지 간에 가상경로를 설정하고 데이터 전송 후 해제
TCP 모든 세그먼트는 가상 경로를 통해 전송
이에 따른 손상 또는 손실된 세그먼트의 재전송 및 확인 응답 처리 가능
TCP 종단 (endpoint) 식별자 (=socket address)
호스트 IP 주소와 포트번호로 정의
전이중(full-duplex) 데이터 전송 서비스
TCP 연결 설정
3-way handshaking
초기 순서 번호 (ISN)
난수발생기
양 방향이 서로 다른 ISN을 사용함 (예. 14531, 35731)
TCP 연결 종료
양방향 모두 연결종료 해야함