SWExpert 2022. 8. 21. 08:02

1. 전송계층 프로토콜 개념

종단 호스트 간 애플리케이션 데이터를 전송해 주는 역할

서버 측에서 실행되는 서버 어플리케이션은 클라이언트 측으로부터 오는 요청을 받아서 처리한 후 그에 대한 응답을 클라이언트로 보내준다.

클라이언트 애플리케이션과 서버 애플리케이션을 이어주는 최하위 프로토콜

TCP(Transmission Control Protogol)

UDP(User Diagram Protocol)

SCTO(Stream Control Protocol): 2000년 이후 등장, TCP, UDP 장점 조합

UDP: 비연결서비스, 연결을 위한 사전 설정 과정 생략, 바로 데이터 주고 받는 것이 가능

TCP: 연결 지향 서비스, 데이터를 주고 받기 전 연결을 위한 설정과정 필요, 데이터 송수신이 완료되면 연결종료, 

신뢰성여부

TCP: 신뢰성 있는 프로세스간 통신 제공, 순서번호, 응답번호, 확인 응답 기법

UDP: 비신뢰성 프로토콜

 

2. TCP

가) TCP 특징

TCP/IP 모델에서 응용계층과 네트워크 계창 사이에 위치

두 응용계층 사이의 프로세스간 통신 제공

송신버퍼, 수신버퍼: 스트림 기반 프로토콜로 데이터를 송수신하기 위함

IP: 스트림 형태가 아닌 패킷 형태로 데이터 전송

TCP는 하나의 전체 데이터를 여러개의 세그먼트로 나누어 처리

흐름제어,오류제어,혼잡제어: 신뢰성 있게 전달

순서번호(Sequence Number): TCP는 바이트 단위 번호, 바이트에 번호가 매겨지면 세그먼트에 SN 부여

헤더 안에 각 패킷의 순서번호 포함하기 위해 최대값 설정, 

패킷의 헤더에 순서번호를 위해 m 비트 설정 -> 순서번호는 0~2m-1값의 범위

순서번호는 모듈러 2m

 

 흐름제어

데이터 패킷을 전송할 때 수신 한도를 넘는 과도한 패킷의 입력으로 패킷 분실이 발생하지 않도록 패킷의 흐름 양을 조절하는 것

송신측과 수신측에서 패킷을 저장할 수 있는 송신, 수신 버퍼 사용 흐름제어 구현

송신, 수신 버퍼 크기 : 리눅스 경우, /proc/sys/net/core/wmem_max, /proc/sys/net/core/rmem_max 파일

 

 오류제어

전송 도중 발생한 부호오류를 검출하고, 정확한 정보를 재현하는 기술

훼손도니 패킷의 감지 및 폐기, 손실, 제거된 패킷 추적, 재전송, 중복 수신 패킷 확인 폐기 기능 수행

 

 혼잡제어

혼잡 발생 원인: 단위 시간당 네트워크로 전송되는 패킷의 수를 나타내는 네트워크 부하(load)가 단위 시간당 네트워크에서 처리할 수 있는 패킷의 수를 나타내는 네트워크 용량(capacity)을 초과하는 경우 발생

혼잡제어를 하는 이유: TCP에서는 종단 간 혼잡을 제어하고 네트워크 대역폭보다 부하가 적게 걸리도록 하기 위함

서비스 TCP 포트
FTP[4] 21(제어용), 20(데이터용)
SSH[5] 22
Telnet[6] 23
SMTP[7] 25
DNS[8] 53(UDP, 53번 포트도 사용)
HTTP[9] TCP 80
POP3[10] 110
IMAP4[11] 143

 

나) 가상의 TCP 동작 시나리오

 

다) TCP 프로토콜

 

구분 내용
소스포트 주소 세그먼트를 송신하는 호스트 응용 프로그램 포트번호 정의(16비트)
UDP 헤더에 있는 소스 포트번호와 동일한 목적 수행
목적지 포트 주소 세그먼트를 수신하는 호스트 응용 프로그램 포트번호를 정의(16비트)
UDP 헤더에 있는 목적지 포트번호와 동일한 목적 수행
순서번호/일련번호 세그먼트에 포함된 첫번째 데이터 바이트에 할당된 번호를 정의(32비트)
확인응답번호(Ack 번호) 세그먼트의 송신자가 받기를 기대하는 바이트 번호(32비트)
헤더길이 TCP 헤더를 4바이트 단위의 개수로 나타낸것(4비트)
(헤더길이:20~60바이트)
제어(Control) 6개의 다른 제어필드 또는 플래그 비트 정의
윈도크기(window size) 상대방이 반드시 유지해야 하는 바이트 단위의 윈도 크기
필드의 길이 16비트, 윈도 최대 크기는 65536 바이트
세그먼트에 보낼 수 있는 데이터 크기, 윈도우 매커니즘에서 사용
버퍼크기
검사합(Checksum) 검사합, 세그먼트 전체에 대한 에러탐지 수행(16비트)
긴급지시자(Urgent pointer) 긴급 플래그(urgent flag) 값이 설정되었을 떄만 유효(16비트)
세그먼트가 긴급 데이터를 포함하고 있을 때 사용

 

URG: 긴급포인터 필드가 의미 있음

ACK: 확인 응답 필드가 의미 있음

PSH: 푸쉬기능

RST: 연결 리셋

SYN: 순서번호를 동기화

FIN: 송신자로부터 더 이상 데이터가 없음

 

① TCP 연결설정

  TCP A       TCP B
1 CLOSED       LISTEN
2 SYN-SENT -> <SEQ=100><CTL-SYN> -> SYN-RECIEVED
3 ESTABLISHED <- <SEQ=300><ACK=101><CTL=SYN,ACK> <- SYN-RECIEVED
4 ESTABLISHED -> <SEQ=101><ACK=301><CTL=ACK> -> ESTABLISHED
5 ESTABLISHED -> <SEQ=101><ACK=301><CTL=ACK><DATA> -> ESTABLISHED

연결 설정을 위한 삼방향 핸드쉐이크

 

② TCP 연결 종료

  TCP A       TCP B
1 ESTABLISHED       ESTABLISHED
2 (Close)
FIN-WAIT-1
-> <SEQ=100><CTL-SYN> -> CLOSE-WAIT
3 FIN-WAIT-2 <- <SEQ=300><ACK=101><CTL=SYN,ACK> <- CLOSE-WAIT
4 TIME-WAIT -> <SEQ=101><ACK=301><CTL=ACK> -> (close)
LAST-ACK
5 TIME-WAIT -> <SEQ=101><ACK=301><CTL=ACK><DATA> -> CLOSED
6 (2 MSL)
CLOSED
       

일반적인 종료순서

 

③ 흐름제어

슬라이딩 윈도우 프로토콜에 의한 패킷 송수신 예

 

 

 

 

슬라이딩 윈도우 프로토콜 개념

 

동작 내용
열림 동작 수신측으로부터 ACK가 도착하여 윈도우의 오른쪽 경계가 오른쪽으로 이동함을 의미
늘어난 만큼 더 많은 데이터의 전송 가능
닫힘 동작 데이터(바이트)가 전송되어 윈도우의 왼쪽 경계가 오른쪽으로 이동함을 의미
전송 측은 이 데이터에 대해 더 이상 관여할 필요가 없음

 

구분 내용
수신윈도우 rwnd 송신측에서 수신측으로 데이터 전송시 데이터 손실 없이 한번에 받을 수 있는 패킷의 크가
ACK를 포함하고 있는 세그먼트를 사용하여 상대방에게 알려줌
혼잡 윈도우 cwnd 네트워크 혼잡 정도에 따라 한번에 전송 가능한 패킷의 크기
네트워크 혼잡 장도가 높아지면 전송 시 데이터 손실이 많이 발생하므로 혼잡 윈도우는 작아지며 혼잡 정도가 낮으면 커짐

 

④ 오류제어

 

도구 내용
검사합 각 세그먼트에 검사할 필드가 있으며 세그먼트가 훼손되었는지를 검사
확인응답 데이터 세그먼트의 수신을 확인해주기 위해 확인응답 사용
재전송 오류제어 매커니즘의 핵심, 세그먼트는 확인 응답되기 전까지 버퍼에 저장

 

⑤ 혼잡제어

느린 시작 개념

혼잡회피 동작 개념

 

⑥ TCP 타이머

타이머종류 내용
재전송 손실된 세그머트의 재전송을 위하여 한 세그먼트에 대한 확인응답을 기다리는 시간인 재전송 타임아웃 값으로 설정되는 재전송 타이머
지속 수신 TCP와 송신 TCP간의 교착상태를 해결하기 위해 각 TCP 연결마다 지속타이머를 사용
킵얼라이브 TCP 설정된 연결이 오랜 기간 휴지상태에 있는 것을 방지하기 위하여 사용되는 타이머
시간-기다림 연결 종료동안 사용되며 TCP가 활동적인 닫기를 수행하고 마지막 ACK를 보낼 때 시간-기다림 타이머가 작동

3. UDP

가) UDP 특징

UDP 프로토콜 용도흐름 및 오류제어를 하지 않는 간단한 요청-응답 통신을 요구하는 프로세스

내부 흐름 및 오류제어 기법을 가진 프로세스

멀티캐스팅 전송기술

SNMP와 같은 프로세스

라우팅 정보 프로토콜(RIP)과 같은 경로 갱신 프로토콜

 

[잘 알려진 UDP 포트]

서비스 UDP 포트 서비스  UDP 포트
NTP[12,13] 123 Syslog 514
BOOTP Server, DHCP Server[14,15] 67 RIP[18] 520
BOOTP Client, DHCP Client[14,15] 68 RIPing 521
TFTP[16] 69 Timed (TIme Server) 525
Kerberos[7] 88 OLSR[19 698

 

나) UDP 프로토콜

필드이름 길이 내용
Source Port 2Bytes 소스포트 패킷의 출발지 포트 번호, 0~65535 값 중 하나
Destination Port 2Bytes 목적지 패킷의 목적지 포트 번호
Length 2Bytes UDP 헤더와 데이터 필드를 포함한 전체 패킷의 길이
Checksum 2Bytes 데이터 오류 검출을 위한 값
Data octets 가변 전송할 데이터 저장

 

4. SCTP(Stream Contgrol Transmission Protocol)

 

가) SCTP 특징

멀티미디어 통신을 위해 UDP, TCP 일부 장점 결합 설계된 새로운 전송계층 프로토콜각 단점에 한 개 이상의 IP 주소가 연결될 수 있다멀티 홈잉, 네트워크 수전 고장 허용하나의 결합당 다중 스트림 송신 가능

특징 내용
프로세스 대 프로세스 통신 프로세스대 프로세스 통신 제공
다중 스트림 결합(association)이라고 하는 다중 스트림 서비스(multi stream service)를 각 연결에 허용
멀티홈잉 송신, 수신 호스트는 결합을 위해 각 종단의 다수의 IP 주소정의
IP 주소 중 하나만이 우선 주소(primary address) 나머지는 대체 주소
전이중통신 동시에 양방향으로 데이터를 전달할 수 있는 전이중 서비스
연결지향 연결지향 프로토콜, 결합(association)
신뢰성 신뢰성 있는 전송 프로토콜, 도작 여부 확인위해 확인응답 사용

번호체계

전송순서번호TSN(Transmission Sequence Number)

스트림 식별자 SI(Stream Identifer)

스트림 순서번호 SSN(Stream Sequence Number)

TCP 바이트 단위: SCTP 데이터 청크 단위, TSN(Transmissiom Seqeunce Number) 사용, TCP 순서번호역할(Sequence Number)

스트림 식별자 SI(Stream Identifer): 결합당 다중 스트림 존재 구분 위해 0부터 시작하는 스트림 식별자 사용

스트림 순서번호 SSN(Stream Sequence Number): 동일한 스트림에 속하는 데이터 청크 구분

 

 

나) SCTP 프로토콜

 결합 시작과 종료

 스트림내 순서화된 전달(Sequenced delivery)

 사용자 데이터 단편화(Fragmentation)

 확인응답(acknowledgement)

 혼잡 회피(Congestion Avodance)

 청크묶음(Chunk Bundling)

 패킷 인증(Packet Validation)

 경로 관리(Path Management)

 

① 결합 시작과 종료

② 스트림내 순서화된 전달(Sequenced delivery)

③ 사용자 데이터 단편화(Fragmentation)

④ 확인응답(acknowledgement)과 혼잡 회피(Congestion Avodance)

⑤ 청크묶음(Chunk Bundling)

⑥ 패킷 인증(Packet Validation)

⑦ 경로 관리(Path Management)