∞. 기술 면접/2. 네트워크

02. 기술면접 - 네트워크 - TCP & UDP

THE HEYDAZE 2021. 9. 28. 11:54
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다

TCP 와 UDP

- 네트워크 계층 중 전송 계층 (Transport Layer)에서 사용하는 프로토콜

[출처] https://mangkyu.tistory.com/15


📌 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 을 통해 연결을 해제

연결 종료 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
더보기
https://kongit.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%8C%A8%ED%82%B7Network-Packet%EC%9D%B4%EB%9E%80-%EC%A0%95%EC%9D%98-%ED%8C%A8%ED%82%B7-%EC%86%90%EC%8B%A4
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(크롬 브라우저) 로 커넥션을 해도 동적으로 포트 할당

 

관련 질문