상세 컨텐츠

본문 제목

HTTP 웹 기본 지식 인터넷 네트워크

Coding/Network

by hwlink 2022. 3. 11. 23:54

본문

강의 '모든 개발자를 위한 HTTP 웹 기본 지식'를 듣고 개인적으로 공부한 내용을 정리하였습니다.

목차

  1. IP 인터넷 프로토콜
  2. TCP
  3. UDP
  4. DNS

인터넷 네트워크

웹이나 HTTP도 인터넷 네트워크 안에서 일어난다. 인터넷 망을 통해 두 컴퓨터가 통신하기 위해서 여러 노드를 거치는 데, 이 요청을 잘 전달하기 위한 방법이 IP(인터넷 프로토콜)이다.


📌 IP

  • 복잡한 인터넷 망에서 서로 데이터를 송수신하려면 IP 주소를 통해서 보낼 수 있습니다.(클라이언트, 서버 모두 IP주소가 존재합니다.)
  • 지정한 IP주소(IP Address)에 데이터 전달
  • 패킷이라는 통신 단위로 데이터 전달합니다.(패키지+버킷 합성어입니다.)

통신이미지

패킷정보

  • 출발지 아이피 목적지 아이피 기타 >>> 인터넷 망에 던진다.
  • 규약을 따라서 출발지 목적지를 노드끼리 읽는다(출발지IP, 목적지IP, 기타정보, 전송할 데이터)

IP 인터넷 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송합니다.
  • 비신뢰성
    • 중간에 패킷 사라지거나 중간에 받은 노드에서 문제가 생긴다면 그에 따른 실패반응을 알 수 없습니다.
    • 대략 1500Byte로 데이터를 끊어서 보내게 되는데, 끊어서 전송된 데이터의 순서를 보장하지 않습니다.
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션(음악들으면서 게임)이 둘 이상이라면 구분하지 못합니다.

📌 TCP(Transmission Control Protocol)

IP 프로토콜의 한계를 해결해줍니다.

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

  • 애플리케이션 계층 - HTTP, FTP
  • 전송계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층 (랜카드 랜드라이버 등등)
  • TCP/IP 패킷 정보

프로토콜 계층

1. 전송할 메시지를 OS 계층에서 TCP 정보를 넣어서 감쌉니다.

2. IP에서 패킷으로 다시 감쌉니다.

3. 네트워크 인터페이스 계층에서 진짜 물리적 랜 카드에 등록된 맥주소 등을 포함해서 이더넷 프레임이라는 걸로 감쌉니다.

TCP 특징

  • IP 프로토콜에 TCP를 추가로 감싸서 IP프로토콜의 단점을 보완해줍니다.

  • 전송제어 프로토콜

  • 연결지향: TCP 3 way handshake (가상연결): 연결을 먼저 한다음에 메세지를 보냅니다.(비연결성 해결)

    • TCP 3 way handshake
    1. syn : 상대가 꺼져있다면 syn 메세지 보낼 때 응답 없습니다.
    2. syn+ACK
    3. ACK
    4. 데이터전송
    • 요즘엔 최적화가 되어서 ACK할 때 데이터를 전송합니다.
    • 개념적으로만 연결이 된거고 사이에 있는 노드들은 연결된지 모릅니다.
  • 데이터 전달 보증: 중간누락 상대가 받지 못한 것 알 수 있다.

    • 패킷이 중간에 소실될 경우 클라이언트가 해당 사실을 인지할 수 있게 알려줌
    • 요청을 정상적으로 받을 경우, 응답 서버에서 클라이언트에 데이터 잘 받았다고 알려줍니다.
  • 순서보장

    • 기본적으로 응답을 받는 곳에서 패킷이 순서대로 도착하지 않는다면, 보낸 곳에게 순서가 바뀐 곳 부터 다시 보내달라고 요청합니다. (서버 내부 최적화 가능합니다.)

TCP/IP 패킷정보에 순서,
현재는 대부분 TCP 사용하며 신뢰할 수 있는 프로토콜로 알려져있습니다.


📌 UDP(User Datagram Protocol)

  • 애플리케션에서 추가 작업 필요
  • IP와 거의 같습니다.
  • 하얀 도화지에 비유합니다.(기능 없습니다)
  • 연결지향도 아닙니다.
  • PORT +체크섬 정도만 추가할 수 있습니다.

그럼 언제 UDP를 사용하는가?

  • 옛날에는 영상같은 데이터를 통신할 때 사용했는데, 요즘에는 영상조차 TCP/IP로 통신함(TCP 점유율 90%이상)
  • TCP 계층은 이미 네트워크 표준이라 더 이상 최적화 불가능합니다.
  • 최근 HTTP3 통신할 때 TCP/IP 3way 때문에 느리기 때문에 더욱 최적화하기 위해 UDP 프로토콜을 채택하게 되면서 각광을 받게 되었습니다.
  • 같은 IP에서 두 가지 이상 연결해야 하게된다면(ex게임, 화상통화, 웹 여러가지) 패킷이 오는데 구별 어떻게 할 것인가? 이럴 때 파로 UDP의 PORT를 사용하여 같은 IP내에 애플리케이션을 구분해줍니다.

PORT

  • 같은 IP내에서 프로세스 구분해줍니다.
  • 한 아파트(ip) 안에서 호수(PORT) 비유합니다.
  • 패킷정보에 출발지, 목적지 PORT들이 담겨있기 때문에 서버, 클라이언트에서 포트번호 파악할 수 있습니다.
  • 0 ~ 65535 할당 가능
  • 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
  • FTP - 20, 21
  • TELNET - 23
  • HTTP - 80
  • HTTPS - 443

📌 DNS(Domain Name System)

why DNS?

  • 아이피로만 서버 송수신이 가능하지만 기억하기 어렵습니다.
  • 아이피가 변경되면 어떻게 찾아갈 것인가?

이러한 문제점 때문에 DNS(Domain Name Server를 사용합니다.)

관련글 더보기