Dolphins의 HelloWorld

전송계층 - TCP , UDP (개념, 연결관리) 본문

전공지식 정리/컴퓨터 네트워크

전송계층 - TCP , UDP (개념, 연결관리)

돌핀's 2019. 7. 15. 21:02

TCP/IP에서의 전송계층은 전송 제어 프로토콜인 TCP와 사용자 데이터그램 프로토콜인 UDP로 나뉜다.


UDP는 패킷의 확실한 전송을 보장하지 못하는 반연 TCP는 패킷의 확실한 전송을 보장한다.



TCP


TCP는 연결 지향형 프로토콜로써 송신 측 컴퓨터와 수신 측 컴퓨터가 데이터를 전송하기 전에 


먼저 데이터를 송수신할 수 있는 연결 통로를 만들고 데이터를 전송하는 프로토콜이다.



- 포트번호 



포트는 TCP가 상위 계층으로 데이터를 전달하거나 상위 계층에서 TCP로 데이터를 전달할 때 상호간에


사용하는 데이터의 이동 통로이다. 잘 알려진 포트로는 다음과 같은 것들이 있다.


<TCP> 20 - FTP(data)

<TCP> 21 - FTP(제어)

<TCP> 22 - SSH

<TCP> 23 - Telnet

<TCP> 25 - SMTP 

<TCP, UDP> 53 - DNS

<TCP, UDP> 80 - HTTP

<TCP> 110 - POP3

<TCP> 443 - HTTPS



- TCP 연결 관리


TCP는 장치들 사이에 논리적인 접속을 성립하기 위해 Three way handshake를 사용한다.


TCP 3 way handshake 는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기


전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다.



응답 절차는 다음과 같다


1) 먼저 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다.


2) 서버는 클라이언트의 요청인 SYN(a) 패킷을 받고 클라이언트에게 요청을 수락한다는 SYN(a+1)과


SYN(b)가 설정된 패킷을 발송한다.


3) 클라이언트가 이 패킷을 받은 후 ACK(b+1)을 서버로 보내면 연결이 성립된다.




TCP의 연결 종료시에는 4-WAY 핸드셰이킹이 수행되는데 그 절차는 다음과 같다.



1) 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.


2) 서버는 클라이언트의 요청(FIN)을 받고 확인 메세지로 ACK를 보낸다.


그리고 나서 데이터를 모두 보낼 때까지 TIME_OUT이 된다.


3) 데이터를 모두 보내고 통신이 끝나면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.


4) 클라이언트는 FIN 메세지를 확인했다는 ACK를 보낸다.


5) 클라이언트의 ACK를 받은 서버는 소켓 연결을 close한다.


6) 클라이언트는 아직 서버로부터 받지 못할 데이터가 있을 것을 대비해서 일정 시간동안 세션을 


남겨놓고 남은 패킷을 기다리는 과정을 거친다 (TIME_WAIT)




UDP


UDP는 비연결 지향 프로토콜이며 패킷이나 흐름 제어, 단편화 및 전송보장 등의 기능은 제공하지 않는다.


UDP헤더(8 바이트)가 TCP(20바이트)보다 간단하기 때문에 상대적으로 통신 과부하가 적다.


UDP는 헤더와 전송 데이터에 대한 체크섬 기능을 제공하며 비록 신뢰성이 떨어지더라도 프로토콜을


처리하는 기능이 작아 TCP보다 데이터 처리가 빠르므로 데이터 전송시간에 민감한 응용 환경에서는


UDP를 사용하는 것이 유리하다.


UDP를 사용하는 대표적 응용 계층 프로토콜에는 DNS, DHCP, SNMP가 있다.

'전공지식 정리 > 컴퓨터 네트워크' 카테고리의 다른 글

웹 서비스  (0) 2019.07.19
네트워크 장비 정리  (0) 2019.07.19
IPv4와 IPv6  (0) 2019.07.14
IP주소와 서브넷마스크  (0) 2019.07.14
이더넷,CSMA/CD,CDMA/CA - 데이터링크 프로토콜  (1) 2019.07.14
Comments