02. 기술면접 - 네트워크 - TCP & UDP
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다
TCP 와 UDP
- 네트워크 계층 중 전송 계층 (Transport Layer)에서 사용하는 프로토콜
📌 TCP (Transmission Control Protocol)
SYN(Synchronization:동기화) - S : 연결 요청 플래그
ACK(Acknowledgement) - Ack : 응답
PSH(Push) - P : 밀어넣기
FIN(Finish) - F : 연결 종료 요청
- Stateful (상태성)
- 인터넷 상에서 데이터를 메시지 형태 (세그먼트 segement 라는 블록 단위) 로 보내기 위해 IP 와 함께 사용하는 프로토콜
- TCP 와 IP 를 함께 사용하는 데, IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리한다.
- 스트림(Stream) 전송으로 전송 데이터의 크기가 무제한이다.
- 연결형 서비스로 가상 회선 방식을 제공한다 (서버와 클라이언트는 1대1로 연결된다)
- 3-way handshaking(핸드 쉐이킹) 과정을 통해 연결을 설정하고 4-way handshaking 을 통해 연결을 해제
- 흐름제어 및 혼잡에러를 제공한다.
- 흐름제어 (전송 속도 조절과 많은 양 요청을 제어)
- 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것
- 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다
- 혼잡제어 (많은 패킷 수 넘침 방지 - 많은 사용자가 요청할 시 패킷도 많음 | 너무 많으면 조금만 전송함)
(그래도 ddos 공격처럼 대량의 패킷을 날리는 경우 그 패킷을 처리하기 위해 서버는 마비됨)
- 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
- 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다
- 높은 신뢰성을 보장한다
- UDP 보다 속도가 느리다 (이러한 기능은 CPU를 사용하기 때문에 속도에 영향을 주는 것입니다.)
- 전이중(Full-Duplex), 점대점(Point to Point) 방식이다
- 전이중
- 전송이 양방향으로 동시에 일어날 수 있다
- 점대점
- 각 연결이 정확히 2개의 종단점을 가지고 있다
- 멀티캐스팅이나 브로드캐스팅을 지원하지 않는다
(손실된 경우 재전송 요청을 하기 때문입니다 | 멀티와 브로드는 UDP 기반으로 함)
- 연속성보다 신뢰성있는 전송이 중요할 때에 사용된다 (파일 전송과 같은 경우에 사용됩니다) (신뢰성 > 성능)
#패킷
인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해서 데이터를 여러 개의 조각들로 나누어 전송을 하는데 이때, 이 조각을 패킷이라고 합니다.
Header | 송신자 IP 주소 수신자 IP 주소 프로토콜 (http, https 등) 패킷 번호 (Packet Number) |
96 bit |
Payload | 데이터 가 담기는 공간 | 896 bit |
Trailer | 네트워크 유형에 따라 다름 일반적 으로 패킷 끝 도달 알리는 비트와 모든 패킷을 완전히 수신되었는지 확인할 수 있는 CRC(Cyclic Redundary Check) |
32 bit |
TIP
TCP 프로토콜을 이용하여 외부 데이터베이스 포트번호를 열어두면 접근할 수 있다
📌 UDP (User Datagram Protocol)
- 데이터를 데이터그램 단위로 처리하는 프로토콜
- Stateless (무상태성)
- 비연결형 서비스로 데이터그램 방식을 제공한다 (데이터 그램이란 독립적인 관계를 지니는 패킷이라는 뜻)
- 연결을 위해 할당되는 논리적인 경로가 없다
- 그렇기 때문에 각각의 패킷은 다른 경로로 전송되고, 각각의 패킷은 독립적인 관계를 지니게 된다.
- 이렇게 데이터를 서로 다른 경로로 독립적으로 처리한다.
- ★정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다
- UDP 헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.
- 신뢰성이 낮다
- TCP 보다 속도가 빠르다
- 신뢰성보다는 연속성이 중요한 서비스, 예를 들면 실시간 서비스(streaming)에 사용된다 - 멀티캐스팅, 브로드캐스팅
(실제로 socket 방식은 무상태성이며, header jwt token 방식을 이용하여 식별한다)
# 요약
- UDP에는 연결 자체가 없어서(connect 함수 불필요) 서버 소켓과 클라이언트 소켓의 구분이 없다.
- 소켓 대신 IP를 기반으로 데이터를 전송한다.
- 서버와 클라이언트는 1대1, 1대N, N대M 등으로 연결될 수 있다.
- 데이터그램(메세지) 단위로 전송되며 그 크기는 65535바이트로, 크기가 초과하면 잘라서 보낸다.
- 흐름제어(flow control)가 없어서 패킷이 제대로 전송되었는지, 오류가 없는지 확인할 수 없다.
- 파일 전송과 같은 신뢰성이 필요한 서비스보다 성능이 중요시 되는 경우에 사용된다. (신뢰성 < 성능)
참고
- UDP 와 TCP 는 각각 별도의 포트 주소 공간을 관리하므로 같은 포트 번호를 사용해도 무방하다. 즉, 두 프로토콜에서 동일한 포트번호를 할당해도 서로 다른 포트로 간주한다
- 또한 같은 모듈(UDP or TCP) 내에서도 클라이언트 프로그램에서 동시에 여러 커넥션을 확립한 경우에는 서로다른 포트 번호를 동적으로 할당한다 (동적할당에 사용되는 포트번호는 49,152 ~ 65,535 이다)
-> 컴퓨터에서 클라이언트A(크롬 브라우저), 클라이언트B(크롬 브라우저) 로 커넥션을 해도 동적으로 포트 할당
관련 질문
'∞. 기술 면접 > 2. 네트워크' 카테고리의 다른 글
06. 기술면접 - 네트워크 - 쿠키, 세션, 로컬 스토리지, 세션 스토리지 (0) | 2021.09.30 |
---|---|
05. 기술면접 - 네트워크 - GET 과 POST (0) | 2021.09.30 |
04. 기술면접 - 네트워크 - CORS (1) | 2021.09.30 |
03. 기술면접 - 네트워크 - HTTP 와 HTTPS 프로토콜 (0) | 2021.09.29 |
01. 기술면접 - 네트워크 - OSI 7 계층 (0) | 2021.09.27 |
댓글
이 글 공유하기
다른 글
-
05. 기술면접 - 네트워크 - GET 과 POST
05. 기술면접 - 네트워크 - GET 과 POST
2021.09.30 -
04. 기술면접 - 네트워크 - CORS
04. 기술면접 - 네트워크 - CORS
2021.09.30 -
03. 기술면접 - 네트워크 - HTTP 와 HTTPS 프로토콜
03. 기술면접 - 네트워크 - HTTP 와 HTTPS 프로토콜
2021.09.29 -
01. 기술면접 - 네트워크 - OSI 7 계층
01. 기술면접 - 네트워크 - OSI 7 계층
2021.09.27