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 통신이 가능하다.