CS지식/HTTP 웹 지식

TCP/UDP/DNS/PORT 개념

indeep 2023. 6. 15. 16:25

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

  • 연결 지향 (3 way handshake, 가상 연결)
  • 데이터 전달 보증
  • 순서 보장

요즘은 대부분 TCP를 사용한다.

TCP 세그먼트는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등 추가 정보를 담는다.

요즘은 위 사진처럼 TCP/IP 패킷이라고 묶어서 부른다.

 

 

TCP는 클라이언트와 서버가 연결이 됐는지 3단계의 확인 절차를 가진다.

 

  1.  클라이언트가 서버에게 SYN을 보냄.
  2.  서버가 클라이언트의 SYN을 받으면 거기에 ACK라는 대답을 추가해서 클라이언트에게 보냄.
  3.  클라이언트는 서버에게 응답 신호를 받으면 다시 서버에게 ACK를 보내줌.

 

이 3단계를 거치면 클라이언트랑 서버가 연결됐다고 보는 것이다.(물리적 연결이 아닌 논리적 연결, 즉 가상 연결이다)

 

연결 확인을 했기 때문에 IP 프로토콜의 한계점인 비연결성을 해결할 수 있다.

 

서로 연결을 확인했기 때문에 데이터 전달도 보증한다.

 

TCP 세그먼트 안에 순서 정보가 들어있기 때문에 서버에서 그 순서대로 들어오지 않으면

해당 패킷부터 다시 보내라고 클라이언트에게 요청을 보낸다.

그렇기 때문에 순서 또한 보장이 된다.

 

 

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

  • 기능이 거의 없다
  • 연결 지향X -> TCP처럼 연결 확인을 하지 않는다.
  • 데이터 전달도 보증되지 않는다.
  • 순서도 보장되지 않는다.
  • 단순하고 빠르다.
  • IP와 거의 같지만 PORT, 체크섬 정보가 추가.

 

PORT

한번에 둘 이상 연결을 해야 하는 경우가 있다.

예를 들어 클라이언트가 게임도 하고 디스코드도 한다고 가정해보자.

클라이언트의 IP와 서버의 IP는 하나인데 어떻게 게임이랑 디스코드를 구분해서 요청을 보내고 받을 수 있을까?

 

바로 PORT를 이용하면 된다.

 

TCP/IP 패킷 정보에는 출발 PORT, 도착 PORT의 정보가 들어있다고 했다.

PORT는 같은 IP내에서 프로세스를 구분하기 위한 번호다.

위 그림을 보면 하나의 동일한 IP에서도 각각의 다른 포트 번호로 프로세스를 구분하게 된다.

즉 PORT를 이용하면 동일한 IP에서도 여러 요청을 보내고 받을 수 있다.

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

 

DNS(Domain Name System)

일종의 IP 정보를 가진 전화번호부라고 생각하면 된다.

IP주소는 길어서 기억하기 어렵다는 특징이 있다. 그래서 DNS 서버에 해당 IP 주소와 도메인을 저장해놓고

외부에서 도메인 요청이 오면 그 도메인에 맞는 IP를 돌려주는 시스템이다.

출처

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런

www.inflearn.com

 

반응형