본문 바로가기

보안/기초

TCP vs UDP

[그림 1] OSI 7 Layer

 

네트워크에서 통신이 일어나는 과정을 7단계로 표현한 OSI 7계층이다.

이중에서 4계층인 전송계층에서는 다음과 같은 특징을 가지고 있다.

-segment 단위

-최종 목적지로 데이터 전송

-TCP, UDP 프로토콜을 통해 통신 활성화

- 장비 :  Gateway

 

이러한 4계층에서 사용되는 TCP 와 UDP 프로토콜에 대해 알아 볼 것이다.

 

TCP

Transmission Control Protocol 로 전송제어규약 이라는 뜻이다 .

TCP와 IP 가 사용될때 IP는 데이터를 전송하는 것을 처리 한다면 TCP는 패킷을 추적과 관리를 하게 된다.

추적 과 관리는 쪼개진 각 패킷들을 전송을 할때 순서를 지정해 두고(checksum) 목적지에서 순서에 맞게 다시 조립을 하는데

이러한 과정으로 중간에 유실된 패킷을 확인 할 수 있다.

패킷을 목적지로 전송하기 위해 논리적인 경로를 배정하는 것을 연결 지향 방식이라고 하는데

TCP는 연결지향 방식으로 신뢰성을 보장 하는 연결형 서비스 이다.

연결지향 방식을 위해 3-way-handshaking 과정으로 연결을 설정하고 4-way handshaking으로 해제를 한다.

https://adm1n1.tistory.com/71 ( <- 3 way handshaking에 관한 내용)

그래서 이러한 연결 과정으로 인해  UDP에 비해 속도가 느린 편이다.

HTTP, 이메일 , 파일 전송에 주로 많이들 쓰인다.

 

[ tcp 특징  ]

-연결 지향 방식

- 3-way handshaking으로 연결 4-way handshaking으로 해제

-높은 신뢰성

-순서 보장

- UDP 보다는 속도 느림

-흐름 제어( 데이터 처리 속도 조절, 수신자의 버퍼 오버플로우 방지)

-혼잡 제어(네트워크 내의 패킷 수가 넘치지 않도록 방지 )

-전이중(Full-duplex), 점대점(point to point) 방식

 

[TCP 서버 특징 ]

- 서버 소켓은 연결만을 담당

- 연결과정에서 반환된 클라이언트 소켓은 데이터의 송수신에 사용

- 서버와 클라이언트는 1대 1로 연결

- 스트림 전송으로 전송 데이터의 크기가 무제한이다

-패킷에 대한 응답을 해야하기 때문에 성능이 낮다

- 빠른 속도가 필요한 서비스 예를 들어 인터넷 생방송(Steaming) 서비스에서는 불리 하다.

 

UDP

User Datagram Protocol의 약자로 사용자 데이터그램 구약이라는 뜻이다.

데이터 그램이란 독립적인 관계를 지닌 패킷이다.

TCP와는 다르게 비연결형 프로토콜로 3-way handshaking, 4-way handshaking의 과정없이 일반적으로

목적지에 데이터를 전송을 한다.  덕분에 신뢰성이 낮고 재조립을 하는 과정이 없다.

그 대신 속도가 TCP가 빠르며 네트워크 부하가 적다 .

 

[UDP 특징]

-비연결형 서비스

- 연결 설정, 패킷 재조립 하는 과정이 없음

-흐름 제어 , 혼잡 제어 기능 없음

- 속도가 TCP에 비해 빠름

- 네트워크 부하가 적음

 

[UDP 서버의 특징]

-UDP에는  연결 자체가 없어서 서버 소켓과 클라이언트 소켓에 구분이 없음

- 소켓 대신 IP 기반으로 데이터 전송

-서버와 클라이언트는 1대 1 (Broadcast), 1대 N (Broadcast) , N대 M (Multicast) 등으로 다양하게 연결될수 있음

-데이터그램 단위로 전송되며 65535 바이트로 제한이 있으며 그 이상 데이터그램은 쪼개서 보낸다

-신뢰성이 높은 서비스 보다는 성능이 중요시 되는 서비스에 주로 이용

 

 

 

 

 

 

 

참고

https://mangkyu.tistory.com/15 

https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4 

 

 

반응형

'보안 > 기초' 카테고리의 다른 글

blind SQL injection  (1) 2024.01.14
Error based SQL injection  (0) 2024.01.13
Bind shell 과 Reverse shell  (0) 2023.10.24
3 way handshake 와 nmap으로 실습!  (1) 2023.10.11
bruteforce란 무엇이고 파이썬으로 구현 해보자!  (0) 2023.06.13