모든 개발자를 위한 HTTP 웹 기본지식 - 챕터 1

Chooooo·2022년 11월 11일
0
post-thumbnail

이 글은 강의 : 김영한님의 - "[모든 개발자를 위한 HTTP 웹 기본지식]"을 듣고 정리한 내용입니다. 😁😁


IP(Internet Protocol)의 역할

지정한 IP 주소에 데이터를 전달한다.
통신 단위인 패킷을 전달한다.

IP 패킷의 목적

  • IP 패킷에는 출발지 IP와 목적지 IP가 있다.
  • 출발지 IP와 목적지 IP를 통해 데이터를 전송한다.

패킷 : 네트워크 상에서 전송하는 데이터의 형식화된 블록이다.

IP 프로토콜의 한계

  • 비연결성
    만약 패킷을 받을 상대가 인터넷이 끊겨도 즉, 서비스 불능 상태여도 패킷은 그대로 전송

  • 비신뢰성
    `패킷을 전송했는데 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않은 경우

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

TCP, UDP

애플리케이션 계층에서 전달된 정보(페이로드)에 TCP 정보를 생성하여 포함시킨다.

  • IP 패킷 정보가 가지고 있는 한계점(비신뢰성, 비연결성)을 TCP 정보를 통해 해결한다.

TCP 특징

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

  • 연결 지향 프로토콜
  • TCP 3 way handshake(가상 연결)
  1. SYN(Synchronizer) 접속 요청 메세지 전송
  2. SYN + ACK : 응답 메세지와 함께 접속 요청 메세지를 같이 보낸다.
  3. ACK : 요청 응답을 하며 이제 양측이 연결이 되었음을 보장할 수 있게 된다.
  4. 데이터 전송 : 이제 데이터를 송신 혹은 수신할 수 있다.

🎈참고: 여기서 두 노드 사이에 다른 노드들이 연결되어있는지는 알 수 없다.
🎈참고: 최근에는 최적화가 되어 클라이언트에서 응답(ACK)을 보낼 때 데이터도 같이 전송을 한다.

  • 데이터 전달 보증
    클라이언트에서 데이터를 전송하면 서버측에서는 데이터가 잘 왔는지 응답을 해주기 때문에 데이터 전달을 보증할 수 있다.

  • 순서 보장
    TCP 정보에는 순서와 같은 정보들이 포함되어 있기 때문에, 패킷의 순서가 잘못된 경우 서버에서 순서가 잘 못된 패킷을 기준으로 재송신 요청을 해서 패킷을 받기 때문에 순서를 보장할 수 있다.

  • 신뢰할 수 있는 프로토콜
    데이터가 전달됨을 보증하고 순서도 보증되기에 신뢰할 수 있다.

  • 현재 대부분이 TCP를 사용한다.

UDP

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

  • TCP와 비교하여 연결지향도 아니고, 데이터 전달, 패킷 순서도 보장되지 않는다.
  • 기능이 거의 없기 때문에 속도가 빠르다.
  • IP와 비슷해 보이지만, PORT정보는 포함되어있고, 체크섬 정도는 추가되어 있다.
  • 애플리케이션에서 추가적인 작업이 필요하다.

🧨참고: 체크섬(checksum)
:중복 검사의 한 형태로 송신된 자료의 무결성을 보호하는 방법으로 네트워크를 통해 전달되는 값이 위/변조 되는 경우를 대비해 체크섬 값을 같이 보내 무결성을 보호한다.

PORT(포트)

IP가 인터넷 세계에서 논리적인 내 컴퓨터의 주소라면, PORT는 내 컴퓨터내의 수많은 애플리케이션의 식별자가 되는 경로이다.

  • PORT는 0 ~ 65535까지 할당이 가능하다.
  • 0 ~ 1023 까지는 이미 일반적으로 사용되는 포트이기에 사용하지 않는게 좋다.

EX) FTP(20, 21), TELNET(23), HTTP(80), HTTPS(443)

DNS

도메인 네임 시스템(Domain Name System) -> 도메인명을 IP 주소로 변환

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

(DNS 서비스 로직)

  1. 클라이언트에서는 우리가 알고 있는 google.com, naver.com 과 같은 도메인 이름으로 요청을 보낸다.
  2. DNS 서버에서는 해당 도메인에 해당하는 IP를 매칭해 응답한다.
  3. 해당 IP로 접속한다.
profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글