모든 개발자를 위한 HTTP 웹 기본 지식 #01 - 인터넷 네트워크

·2022년 11월 19일
0
post-thumbnail

인프런 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 수강하고 정리한 글입니다.

인터넷 프로토콜 스택의 4계층


프로토콜 계층


IP (Internet Protocol)


네트워크 계층의 프로토콜로, 인터넷 망에서 클라이언트가 보낸 메세지를 목적지까지 보내기 위해 IP헤더에 출발지와 목적지 IP 주소와 함께 전송할 데이터를 담아서 보낸다.

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

인터넷에 전송된 패킷은 여러 노드를 거쳐 목적지(서버)에 도달하게 되며 서버는 메세지를 잘 수신했다는 정보를 담아 다시 클라이언트로 보낸다.

IP 프로토콜의 한계점

1) 비연결성

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.

2) 비신뢰성

  • 패킷이 중간에 소실될 수 있고, 순서도 보장되지 않는다.

3) 프로그램 구분 모호

  • 같은 IP를 사용하는 서버에서 하나 이상의 애플리케이션이 구동중일 경우 어떤 애플리케이션에 패킷을 전달해야할지 알 수 없다.

 

TCP / UDP


IP 프로토콜의 한계점을 보완해준다.
애플리케이션 계층에서 전달된 정보(payload)에 TCP 정보를 생성하여 포함시킨다.

TCP 특징

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

  • 연결 지향 프로토콜
    TCP 3 way handshake(가상 연결)
    1. 클라이언트에서 서버에 연결 요청을 하기위해, SYN(Synchronizer) 데이터를 보낸다.
    2. SYN + ACK: 서버에서는 요청을 받으면 정상적으로 받았다는 응답 메세지(ACK)와 함께 접속 요청 메세지(SYN)를 같이 보낸다.
    3. ACK: 클라이언트에서는 SYN+ACK을 받고 서버에 요청을 잘 받았다는 ACK을 전송한다. 이제 양측이 연결이 되었음을 보장 할 수 있게 된다.
    4. 데이터 전송: 연결이 되고 나면 데이터를 송신 혹은 수신할 수 있다.

    (실제 연결된 것은 아니고, 논리적으로 연결된 것이다.)
    (최근에는 최적화되어 3번 ACK 단계에서 데이터를 보내기도 한다.)

  • 데이터 전달 보증
    클라이언트에서 데이터를 전송하면 서버측에서는 데이터가 잘 왔는지 응답을 해주기 때문에 데이터 전달을 보증할 수 있다.
  • 순서 보장
    TCP정보에는 전송순서 정보들이 포함되어 있기 때문에, 패킷의 순서가 잘못 전달된 경우 서버에서 순서가 잘못된 것을 알 수 있다.
    기본적으로 서버에서는 잘못된 패킷을 기준으로 패킷을 다시 요청한다.

UDP 특징

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

  • 하얀 도화지에 비유...(기능이 거의 없음)
  • TCP와 비교하여 연결지향도 아니고, 데이터 전달, 패킷 순서도 보장되지 않는다.
  • 그래서 단순하고 속도가 빠르다.
  • IP와 거의 같고, Port 정보가 포함되어있고, 체크섬 정도만 추가되어있다.
  • 애플리케이션에서 추가 작업이 필요하다.

체크섬?
중복 검사의 한 형태로 전송되는 헤더 및 데이터의 무결성을 보장하기 위해 사용된다.

 

PORT


IP가 인터넷 세계에서 논리적인 내 컴퓨터의 주소라면, PORT는 내 컴퓨터내의 수많은 애플리케이션의 식별자가 되는 경로이다. (내 컴퓨터 IP가 아파트라면, 포트번호는 동 호수와 비슷한 맥락이다. )

PORT는 0 ~ 65535까지 할당이 가능하다.

단, 0 ~ 1023 까지는 이미 일반적으로 사용되는 포트이기에 사용하지 않는게 좋다.

  1. 잘 알려진 포트 (0 ~ 1023) - 국제 도메인 관리기구에 통제
  • FTP - 20, 21 (TCP)
  • SSH - 22 (TCP)
  • 텔넷 - 23 (TCP)
  • SMTP - 25 (TCP)
  • DNS - 53 (TCP/UDP)
  • DHCP - 67 (UDP)
  • HTTP - 80 (TCP)
  • HTTPS - 443 (TCP)
  1. 등록 포트 (1024 ~ 49151) - 국제 도메인 관리기구에 등록
  • MySQL - 3306
  • PostgreSQL - 5432

 

DNS


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

IP주소는 외우기도 힘들고 변경될수도 있다.
그래서 이런 IP 주소들을 KEY/Value로 우리가 읽기에 가독성도 좋고 외우기도 좋은 도메인을 알아서 IP주소로 매칭하여 찾아주는 DNS 서버가 만들어졌다.

1) 클라이언트에 google.com, naver.com 과 같은 도메인 이름으로 요청을 보낸다.
2) DNS 서버에서는 해당 도메인에 해당하는 IP를 매칭해 응답한다.
3) 해당 IP로 접속한다.

(윈도우에서는 기본적으로 DNS서버를 자동으로 받도록 설정되어, 사용하는 통신사의 DNS서버를 사용하게 된다.)

profile
삶을 스스로 통제하고 있다는 느낌을 받을 때 더 행복하고 성공한다.🍃

0개의 댓글