IT recording...

[Network] 3. TCP, UDP 본문

Network

[Network] 3. TCP, UDP

I-one 2022. 5. 16. 00:07

[그림과 함께 편하게 보려면 여기로]

https://adorable-aspen-d23.notion.site/Network-3-TCP-UDP-ed4dd8f8f8d2426193a93491351092f1

 

[Network] 3. TCP, UDP

1. Transport Layer (전송계층)

adorable-aspen-d23.notion.site

1. Transport Layer (전송계층)

  • 목적지에 신뢰할 수 있는 데이터를 전달하는 계층
  • 역할
    • 데이터의 목적지가 어떤 프로세스인지 구분
      • port 번호
        • 웹서버, 이메일 서버, storage 서버 등등
        • 데이터를 받았을 때 어떤 프로그램을 써서 보여줄 것인지 알아차릴 수 있도록 header를 추가해야 한다.
      21 FTP
      25 SMTP
      53 DNS
      80 HTTP
      443 HTTPS
      
    • 오류 점검
      • 데이터가 제대로 도착했는지 확인하고 오류가 발생하면 데이터를 재전송하도록 요청한다.
  • 공통
    • TCP헤더, UDP헤더에 포트번호가 포함된다.
      • 출발지 포트번호
      • 도착지 포트번호

TCP

UDP

2. TCP(Transmission Control Protocol)

  • HTTP,SSH,FTP
  • 데이터를 메시지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
    • IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 TCP의 특성을 활용해 신뢰성을 유지하겠다.
      • IP → 데이터의 배달
      • TCP → 패킷 추적 및 관리
        • 패킷 : 라우팅을 효율적으로 하기 위해 데이터를 여러 조각들로 나누어 전송하는 것
  • 연결형 서비스
    • 연결을 위해 할당되는 논리적 경로가 있다.
      • 모든 패킷들을 같은 경로로 이동
    • 연결 설정(3-way handshaking)
    • 해제 설정(4-way handshaking)
  • 흐름 제어 및 혼잡 제어
    • 흐름제어
      • 데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절
      • 수신자의 버퍼 오버플로우 방지
    • 혼잡제어
      • 네트워크 내의 패킷 수가 증가하지 않도록 방지
      • 정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상을 막음
  • 단점
    • 매번 connection을 연결해서 시간 손실 발생 (3-way-handshaking)
    • 패킷을 조금만 손실해도 재전송
  • 언제 사용?
    • 연속성보다 신뢰성있는 전송이 중요할 때 사용하는 프로토콜
    • ex) 파일전송, HTTP, 메일

1. TCP 3-way handshaking

: 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장한다.

  • 0단계 - 통신전
    • 클라이언트는 포트가 닫힌 Closed 상태
    • 서버는 해당 포트로 항상 서비스를 제공할 수 있도록 Listen 상태
  • 1단계 - 클라이언트의 통신 요청 (SYN)
    • 임의의 포트 번호가 클라이언트 프로그램에 할당
    • 클라이언트 SYN Sent 상태
  • 2단계 - 서버의 통신 수락 (SYN + ACK)
    • 서버는 SYN Received 상태
    • 클라이언트 Established 상태
  • 3단계 - 클라이언트의 서버 응답 확인 (ACK)
    • 클라이언트는 서버의 응답을 확인했다는 표시로 ACK 전송
    • 서버 Established 상태
  • 이후, 전송할 데이터가 있으면 데이터를 전송할 수 있다.

2. TCP 4-way handshaking

  • 0단계 - 해제전
    • 클라이언트 ESTABLISHED 상태
    • 서버 ESTABLISHED 상태
  • 1단계 - 클라이언트의 종료 요청 (FIN)
    • 클라이언트 FIN-wait 상태
      • 서버가 FIN플래그로 응답하기 전까지 연결을 계속 유지
  • 2단계 - 서버 종료 수락 (ACK)
    • 클라이언트 FIN-wait 상태
    • 서버 CLOSE-wait 상태
    • 서버는 일단 확인 메시지를 보내고 자신의 통신이 끝날 때까지 기다린다.
      • 전송할 데이터가 남아있다면 계속해서 진행한다.
      • 클라이언트 쪽에서도 아직 서버로부터 받지 못한 데이터가 있을 것을 대비해 일정 시간동안 세션을 남겨두고 패킷을 기다린다. (Time_wait)
  • 3단계 - 서버의 찐 종료 신호 (FIN)
    • 데이터 다 보냈어! 연결 종료하자~
    • 클라이언트 FIN-wait 상태
    • 서버 LAST-ACK 상태
  • 4단계 - 클라이언트의 서버 응답 확인 (ACK)
    • 오키! 확인했어~
      • 클라이언트로부터 ACK메시지를 받은 서버는 소켓 연결을 해제한다.
    • 클라이언트 TIME WAIT 후 CLOSED 상태
    • 서버 CLOSED 상태

3. UDP(user datagram protocol)

  • 데이터를 데이터그램 단위로 처리하는 프로토콜
    • IP주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며 UDP의 특성을 활용해 신뢰성을 유지하겠다.
  • 비연결형 서비스
    • 연결을 위해 사용하는 논리적 경로가 없다. 즉, 각 데이터그램들이 다른 경로를 통해 도착한다.
  • 흐름제어X, 혼잡제어X
    • 패킷에 순서를 부여해서 재조립하는 기능이 존재하지 않는다. → 오류가 있는지 확인할 수 없다.
  • 실시간 응용 및 멀티태스킹 가능
    • 여러 다수 지점에 전송 가능하다. (1:다)
  • 언제 사용?
    • 신뢰성보다는 연속성이 중요한 서비스
    • ex) 실시간 서비스(streaming)
      • DNS, Voice of IP(VoIP)
        • DNS : 호스트의 IP주소를 찾는 프로토콜

2. 결론

  • TCP
    • 나 데이터 보낸다?? - OK!
    • 더 보내도 돼? - 아직!
    • 다 받았어? - 응!! 다왔어!!
  • UDP
    • 나 보낸다아아아가가가가각!!!! - (안들음)

TCP

UDP

TCP UDP

연결방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
전송 순서 전송 순서 보장 전송 순서 보장 안함
수신 여부 확인 수신 여부 확인함 수신 여부 확인 안함
통신 방식 1:1 통신 1:1, 1:N, N:N
신뢰성 높다 낮다
속도 느리다 빠르다

참고

https://mangkyu.tistory.com/15

https://seongonion.tistory.com/74

https://velog.io/@gndan4/네트워크-전송-계층

'Network' 카테고리의 다른 글

[Network] 6. 대칭키/공개키  (0) 2022.05.16
[Network] 5. DNS Round Robin  (0) 2022.05.16
[Network] 4. HTTP  (0) 2022.05.16
[Network] 2. OSI 7계층  (0) 2022.05.16
[Network] 1. 인터넷  (0) 2022.05.16
Comments