TCP와 UDP

no.oneho·2023년 8월 4일
0

Network

목록 보기
1/2

[인터넷 네트워크]

  • 인터넷 통신
  • IP(Internet Protocol)
  • TCP, UDP,
  • PORT
  • DNS

인터넷 통신

IP(인터넷 프로토콜)

  • 지정한 IP 주소에 데이터 전달
  • 패킷이라는 통신 단위로 데이터 전달

IP 패킷 정보

출발지 IP -> 목적지 IP, 메시지를 기재해 인터넷 망에 던져준다. 그러면 IP 프로토콜내에서 출발지부터 목적지까지 메시지를 들고 갈 수 있다.

IP 프토토콜의 한계

  • 비연결성

    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성

    • 중간에 패킷이 사라지면?

    • 패킷이 순서대로 안오면?

  • 프로그램 구분

    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?

대상이 서비스 불능이면?


클라이언트는 대상 서버가 패킷을 받을 수 상태인지 알 수가 없다. 아무리 요청을 해도 서버가 꺼져 있으면 요청을 받을 수 가 없다.

예상 순서와 다르게 패킷이 도착하면?


클라이언트에서 보낸 데이터는 여러 데이터로 쪼개져서 노드를 타게 되는데 이 때 서버에 도착하는 데이터가 요청 데이터와 순서가 완전 일치하다고 보장 할 수는 없다.

이러한 문제를 해결하는 방법이 TCP프로토콜 이다.

TCP


TCP의 특징

  • 연결지향 - (연결을 우선 하고 요청을 전달)
  • 데이터 전달 보증 (요청을 전달 시 전달이 잘 되었는지 확인 가능)
  • 순서 보장

연결지향

TCP 3 way handshake

  1. 클라이언트 -> 서버로 연결 요청 신호 (SYN)

  2. 요청 받은 서버 -> 클라이언트로 요청에 대한 수락과 클라이언트에 대한 접속 요청 (SYN + ACK)

  3. 요청을 받은 클라이언트도 요청에 대한 수락을 보내줌 (ACK)

ACK와 함께 데이터 전송이 가능함!

이러한 방식으로 서버에 이상이나 종료된 상태면 요청에 대한 수락이 오지않아 서비스 불능일 때 대비 가능

데이터 전달 보증

클라이언트가 데이터를 보내면 서버도 클라이언트로 요청에 대한 답변을 보내준다. 이를 통해 데이터 전달에 대한 불확실성이 대비가 된다.

순서 보장

순서가 잘못된 데이터가 서버로 도착하면, 서버는 클라이언트에게 알린 후 데이터를 다시 보내라는 요청을 한다

이런 과정들은 TCP 데이터 안에 전송 제어 정보, 순서 정보, 검증 정보들이 추가되어 같이 전달되기 때문에 신뢰할 수 있는 프로토콜 이라고 얘기를 한다.

UDP

IP프로토콜과 거의 유사하나,

PORT를 통해 패킷을 구별하고, 메시지에 대한 검증 정도만 추가 되었다.

그럼 TCP대신 UDP를 쓸 때의 이유는 뭘까?

UDP는 데이터 전달 및 순서가 보장되진않지만 일단 빠르다. 그리고 UDP(User Datagram Protocol)은 사용자 데이터 프로토콜이라는 뜻으로 TCP와 다르게 UDP는 확장성에 대해 열려있어 수정이 가능하다.



해당 포스팅은 인프런 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 수강하며 작성하였습니다.

profile
안녕하세요 백엔드 개발자를 지망하고있는 노원호라고합니다.

1개의 댓글

comment-user-thumbnail
2023년 8월 4일

즐겁게 읽었습니다. 유용한 정보 감사합니다.

답글 달기

관련 채용 정보