Transcript tcp
TCP & UDP
손수진
신동균
TCP & UDP
TCP (Transmission Control Protocol)
TCP는 인터넷상의 컴퓨터들 사이에서 데이터를 메시지의 형태로
보내기 위해 IP와 함께 사용되는 프로토콜이다. IP가 실제로 데이
터의 배달처리를 관장하는 동안, TCP는 데이터 패킷을 추적 관리
한다.
예를 들면, HTML 파일이 웹 서버로부터 사용자에게 보내질 때,
서버 내에 있는 TCP 프로그램 계층은 파일을 여러 개의 패킷들로
나누고, 패킷 번호를 붙인 다음, IP 프로그램 계층으로 보낸다. 각
패킷이 동일한 수신지 주소(IP주소)를 가지고 있더라도, 패킷들은
네트웍의 서로 다른 경로를 통해 전송될 수 있다. 다른 한쪽 편(에
있는 TCP는, 각 패킷들을 재조립하고, 사용자에게 하나의 완전한
파일로 보낼 수 있을 때까지 기다린다.
TCP는 연결지향 프로토콜이라고 알려져 있는데, 이것은 메시지
들이 각단의 응용 프로그램들에 의해 교환되는 시간동안 연결이
확립되고 유지되는 것을 의미한다. TCP는 IP가 처리할 수 있도록
메시지를 여러 개의 패킷들로 확실히 나누고, 반대편에서는 완전
한 메시지로 패킷들을 재조립할 책임이 있다.
TCP (Transmission Control Protocol)
아래 그림과 같이 TCP 세그먼트는 IP 데이터그램 내에서 캡슐화
되어 전송된다.
TCP 세그먼트 구조 및 역할(1)
TCP 세그먼트 구조 및 역할(2)
TCP 특징
TCP는 네트워크에 연결된 각 컴퓨터 간에 오류 제어나 패킷의
중복 방지, 순서 보장 등 신뢰할 수 있는 서비스를 제공한다.
연결 지향적(Connection Oriented)서비스
- 연결 지향적이란 네트워크의 컴퓨터 사이에 통신을
위한 경로가 설정되면 이를 유지하는 것을 말한다.
일대일 서비스
- 방송(Broadcast)이나 멀티캐스트(Multicast)와 같이
일대다의 특성을 갖는 것이 아니라 일대일로 연결되는
것을 말한다.
보장형 서비스
-패킷을 전송할 때 전송순서 보장,중복방지,흐름제어,
체증 제어를 보장한다.
양방향 통신 서비스, 스트림 전송 서비스
안정한 연결 종료 서비스
TCP의 기능(1)
연결제어 (Connection Control) : TCP를 사용하는 두 응용 프로
그램 사이에 가상회선을 만들어 준다. 가상회선을 만들기 위해서
TCP는 연결을 만드는 일과 연결을 중단하는 일 연결을 유지하는
일을 수행한다. 이를 위해서 TCP 헤더에는 접속 요청 및 확인, 끊
기 요청 및 확인, 응답 확인 등의 처리를 수행하는 제어용 비트와
필드가 있다.
순서제어 (Sequence Control) : 송신측과 수신측 순서번호의
동기를 갖추고, 패킷을 전송할 때마다 순서번호를 하나씩 증가
시킨다.
Window 제어 (Window Control) : TCP는 순서제어와 ACK에
의해 패킷을 하나씩 전송하고 꼭 ACK를 확인한다. 하지만 이렇게
하면 속도가 너무 느려지는 단점이 있다.
이를 해결하기 위해 Window방식을 사용한다.
Window 는 송신측에서 한 번에 전송할 수 있는 패킷의 개수이다.
즉 Window 크기가 5라면 송신측은 순서대로 1,2,3,4,5번 패킷을
차례로 보내고 5번에 대한 ACK만 수신한다.
TCP의 기능(2)
응답확인 (ACK : Acknowledgment) : 송신자가 수신자에게 패킷
을 전송하면, 수신자가 송신자에게 패킷을 잘 받았다고 응답하는
것. 송신측은 ACK를 수신 후에 다음 패킷을 송신한다.
패킷이 분실되거나 라우터의 에러로 ACK를 전송하지 않을 경우
가 있는데 TCP는 이를 대비해서 타이머를 사용한다. 패킷을 전송
하면 타이머를 작동시키고 일정시간 기다려 ACK가 도착하지 않
으면 패킷을 재전송한다.
타이머를 구동
- retransmission(재전송) 타이머
- 윈도우가 증가되었는지 확인하기 위한 persist 타이머
- 연결을 유지하고 있는지 확인하기 위한 keepalive 타이머
- 연결을 종료하기 위한 2MSL(Maximum Segment Lifetime) 타이머
TCP 동작
클라이언트
(active open)
SYN_SENT
연결 설정
서버
SYN J
(passive open)
LISTEN
SYN_RCVD
SYN K, ACK J+1
ESTABLISHED
ACK K+1
ESTABLISHED
data
데이터 전달
ACK
(active close)
close from
application
FIN_WAIT_1
연결 종료
FIN M
(passive close)
deliver EOF to application
CLOSE_WAIT
ACK M+1
FIN_WAIT_2
FIN N
TIME_WAIT
ACK N+1
close from application
LAST_ACK
CLOSED
TCP 포트 및 서비스(1)
TCP 포트는 TCP(Transmission Control Protocol)를 사용하여 보
낸 데이터 전달을 위해 지정된 프로그램 포트를 사용한다. TCP
포트는 UDP 포트보다 더 복잡하고 다르게 작동한다.
UDP 포트가 하나의 메시지 대기열 및 UDP 기반 통신의 네트워
크 종점으로 작동하는 데 반해 모든 TCP 통신의 최종점은 고유
연결이며, 각 TCP 연결은 두 종점에 의해 고유하게 식별된다.
각 단일 TCP 서버 포트에서는 모든 TCP 연결이 두 쌍의 IP 주소
와 TCP 포트에 의해(각 연결된 호스트마다 하나의 주소/포트 쌍)
고유하게 식별되기 때문에 여러 연결로 공유 액세스를 제공할 수
있다.
TCP 포트 및 서비스(2)
TCP 프로그램은 아래 그림과 같이 예약되거나 잘 알려진 포트 번
호를 사용한다.
UDP (User Datagram Protocol)
UDP는 IP를 사용하는 네트워크 내에서 컴퓨터들 간에 메시지들
이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다.
TCP와 마찬가지로 UDP도 한 컴퓨터에서 다른 컴퓨터로 데이터
그램이라고 불리는 실제 데이터 단위를 받기 위해 IP를 사용한다.
교환해야 할 데이터가 매우 적은 네트워크 응용프로그램들은 처
리시간 단축을 위해 TCP 보다 UDP를 더 좋아할 수 있다. 일례로
TFTP는 TCP 대신에 UDP를 사용한다.
UDP는 IP 계층에서 제공되지 않는 두 개의 서비스를 제공하는데,
하나는 다른 사용자 요청을 구분하기 위한 포트 번호와, 도착한
데이터의 손상여부를 확인하기 위한 체크섬 기능이다.
UDP (User Datagram Protocol)
UDP 메시지는 아래와 같이 IP 데이터그램 내에서 캡슐화되어 전
송된다.
UDP 메시지의 구조 및 역할
0
15 16
31
UDP SOURCE PORT
UDP DESTINATION PORT
UDP MESSAGE LENGTH
UDP CHECKSUM
DATA
…
SOURCE PORT : 응답을 받을 포트어드레스가 된다.선택적인
필드이며, Destination Port는 서비스를 제공하는 목적지 포트
어드레스이다.
LENGTH : UDP datagram (header + data)의 Byte
수를 나타낸다. 최소값=8
CHECKSUM : 선택적인 필드로 0이 올 수도 있으며,이 경우는
체크섬을 계산하지 않았음을 의미한다.
UDP 패킷의 구조 및 역할
UDP 를 사용하는 경우
단순한 요청-응답 통신을 필요로 하고 흐름 제어와 오류제어는
큰 관심이 없는 프로세스에 적절하다.
FTP와 같이 대량의 데이터를 보내야 하는 프로세스에
는 보통 사용되지 않는다.
내부적인 흐름 제어와 오류 제어 메커니즘을 가지고 있는 프로세스에
적절하다.
멀티캐스팅과 브로드캐스팅을 위한 전송 프로토콜로 적절하다.
멀티캐스팅과 브로드캐스팅 기능은 UDP 소프트웨어에 내장되어 있다.
SNMP와 같은 관리 프로세스에 사용된다.
라우팅 정보 프로토콜(RIP)과 같은 경로 갱신 프로토콜에 사용된다.
UDP 의 장점 및 특징
UDP Header가 TCP에 비해 작다. (8 Bytes versus 20 Bytes)
브로드캐스트 및 멀티캐스트를 보낼 수 있다.
(TCP의 경우는 는 각각의 노드가 Connection을 설정해야 하므로
브로드캐스트 및 멀티캐스트를 사용할 수 없다.)
주로 리얼오디오 등의 실시간 프로그램에 많이 사용된다.
TCP의 접속/해제 및 패킷 순서처리 기능을 제외하여 부하를 줄인다.
UDP의 주요 특징
비 접속 지향.
최선의 노력으로 데이터 전송
매우 간단하다.
UDP 의 단점
UDP는 신뢰성이 보장되지 않고 비연결인 데이터그램 전송 구조
를 제공한다.
UDP 메시지는 손실될 수 있고, 중복될 수도 있으며, 순서가 뒤 바
뀌어 도착할 수도 있다.
패킷들이 수신자가 처리할 수 있는 양보다 더 빨리 도착할 수 도
있다.
극히 제한된 오류 점검의 기능만을 수행한다.
UDP 포트 및 서비스
UDP 포트는 UDP 메시지를 송신하고 수신하는 위치를 제공한다.
UDP 기반 프로그램은 한 번에 하나 이상의 메시지를 수신할 수 있다.
각 UDP 서버 포트는 예약된 포트 번호 또는 잘 알려진 포트 번호로
식별된다.
TCP 및 UDP 차이점
응용 계층
전달 계층
인터넷 계층
네트워크
액세스 계층
TCP
UDP
스트림
메시지
세그먼트
패킷
데이터그램
데이터그램
프레임
프레임
TCP 및 UDP 차이점
결론
인터넷 어플리케이션의 대부분은 신뢰성과 흐름제어 서비스로
데이터가 손실되거나 분실이 발생하지 않도록 TCP 프로토콜을
사용한다.
그러나 TCP의 오버헤드를 피하려는 어플리케이션, 브로드캐스
트나 멀티캐스트를 사용하기 때문에 TCP를 사용할 수 없는 어플
리케이션은 UDP를 사용한다.
현재의 네트워크 기술이 안정되어 UDP처럼 신뢰성 없는 프로토
콜도 문제 없이 목적지에 도달할 가능성이 높다.
LAN과 WAN은 대부분 안정적이어서 분실 가능성은 매우 적고,
아날로그 모뎀 통신의 경우도 데이터링크에서 오류정정 및 재전
송 서비스를 하므로 UDP 통신이 가능하다.