오봉이와 함께하는 개발 블로그

HTTP - TCP&UDP, PORT, DNS 본문

이론

HTTP - TCP&UDP, PORT, DNS

오봉봉이 2022. 7. 30. 00:23
728x90

TCP & UDP

인터넷 프로토콜 스택의 4계층이 있다.

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층

프로토콜 계층

해당 사진에서 Ethernet Frame에는 MAC Address 등 물리적인 정보가 들어있다.

TCP/IP 패킷 정보

TCP 특징(Transmission Control Protocol 전송 제어 프로토콜)

  • 연결 지향적이다.
    • 연결이 되었는지, 안 되었는지를 확인한다.
    • TCP 3 way handshake(가상 연결)
  • 데이터 전달 보증
    • 패킷이 누락되면 알 수 있다.
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP를 사용한다.

TCP 3 way handshake


해당 과정들을 통해 클라이언트도, 서버도 서로를 믿을 수 있게 된다.
서로 연결이 되었다는 것을 확인하고 데이터를 전송한다.

하지만, 실제적으로 연결된 것이 아니고 개념적으로 연결된 것이다.
나를 위한 전용 랜선이 연결된 것이 아니라, 클라이언트와 서버가 서로 통신할 수 있는 상태라는 것을 의미한다.

데이터 전달 보증


TCP에서는 데이터를 전송하면 데이터를 잘 전송 받았다고 응답을 보내준다.
데이터를 잘 전송 받았다고 응답이 오지 않는다면 문제가 생긴 것.

순서 보장


서버에서 패킷 순서를 알고 있어서 순서대로 온 패킷을 제외한 다른 패킷들을 모두 버리고 다시 보내라 요청한다.
물론 최적화를 통해서 처리하는 방법도 있지만, 위 방법이 기본적인 방법이다.

어떻게?

위 모든 기능들은 TCP/IP 패킷 정보를 통해 얻은 정보를 바탕으로 동작하는 기능들이다.

UDP 특징(User Datagram Protocol 사용자 데이터그램 프로토콜)

  • 기능이 거의 없다.
  • 연결 지향적이지 않다.
  • 데이터 전달을 보증하지 않는다.
  • 순서를 보장하지 않는다.
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다
  • 정리
    • IP와 거의 같지만, PORT와 체크섬 정도만 추가 되었다.
      • 하나의 네트워크에서 여러 애플리케이션이 사용하는 패킷이 있을텐데, 어떤 애플리케이션에서 어떤 패킷을 사용하는지 알 수 있게 하는 것이 PORT이다.
    • 애플리케이션에서 추가 작업이 필요하다.

PORT


한번에 둘 이상의 서버와 연결해서 통신해야 할 때가 있을 것이다.
위 경우 수 많은 패킷들이 전송될텐데 어떤 패킷이 내가 사용하는 애플리케이션의 패킷인지 알 수 없다.
이를 위해 PORT가 존재한다.

  • 0 ~ 65535 : 할당 가능한 포트 번호
  • 0 ~ 1023 : 잘 알려진 포트로 사용하지 않는 것이 좋다.
    • FTP : 20, 21
    • TELENET : 23
    • HTTP : 80
    • HTTPS : 443

IP는 아파트 주소라고 치면 PORT는 동호수를 알려주는 것이라고 생각하면 간편하다.

TCP/IP 패킷 정보

패킷 정보

PORT - 같은 IP 내에서 프로세스 구분

DNS (Domain Name System 도메인 네임 시스템)

IP는 기억하기 어렵고, 치명적으로 IP는 변경될 수 있다는 단점이 있다.
이를 위해 DNS(Domain Name System 도메인 네임 시스템)이 존재한다.

DNS는 도메인 명을 통해서 IP 주소로 변환시켜준다.

DNS 사용

 

인프런 김영한 지식 공유자님의 강의 - 모든 개발자를 위한 HTTP 웹 기본 지식

728x90
Comments