Index
Search
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 연결 종료
◦
양방향 모두 연결종료 해야함