[HTTP] 인터넷 네트워크

이병수·2023년 12월 26일
0

HTTP 웹 기본 지식

목록 보기
1/10

이 글은 모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 님의 강의를 듣고 정리하는 글입니다.

인터넷 네트워크


인터넷 통신

  • 인터넷망에서 컴퓨터들은 어떻게 통신을 할까??

클라이언트에서 서버로 데이터를 송신할 때, 중간에 수 많은 노드라고 하는 서버들을 거쳐서 데이터를 보내게 된다.

그렇다면 어떤 방법을 통해서 데이터들이 보내질까??


IP (인터넷 프로토콜)

클라이언트와 서버 컴퓨터에 대한 주소를 부여해서 데이터의 출발지와 목적지를 판단하자.

IP(인터넷 프로토콜) 역할

  • 지정한 IP 주소(IP Address)에 데이터를 전달

  • 패킷(Packet)이라는 통신 단위로 데이터를 전달

클라이언트에게 IP 주소, 서버에게 IP 주소를 부여하여, 메시지를 보낼 때, 최소한의 규칙이 있게 보낼 수 있는데 IP 패킷 이라는 규칙을 통해 메시지를 보낸다.

IP 패킷 안에는 출발지의 IP 주소, 목적지의 IP 주소, 메시지 내용이 있다.

주의!! 요청할 때와 응답할 때 서로 다른 인터넷 망 노드들을 거쳐서 전달될 수 있음

IP 프로토콜의 한계

  • 비연결성

    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성

    • 중간에 패킷이 사라지거나, 패킷이 순서대로 안 올 수 있음
  • 프로그램 구분

    • 같은 IP 주소를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면??
      • 내 컴퓨터에 웹 브라우저를 열고, 게임하는 것도 키고, 동영상도 보는 경우라면??

이를 해결하기 위해 TCP, UDP가 있다.


TCP, UDP

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

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

IP 프로토콜에서 중간에 패킷이 손실되거나 순서에 문제가 생기는 부분을 TCP 프로토콜이 해결해줄 수 있다.

  • 데이터를 감쌀 때, OS 계층에서 TCP정보를 감싸는데, 해당 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 등 데이터를 감싸서 함께 보내진다.
  • 따라서 IP 프로토콜에서 해결할 수 없었던 문제들을 TCP에서 해결이 된다.

TCP의 특징
(전송 제어 프로토콜 - Transmission Control Protocl)

  • 연결지향 - TCP 3 way handshake

TCP 3 way handshake 순서

  1. 먼저 클라이언트에서 서버로 SYN(접속 요청) 메시지를 보냄
  2. 서버에서 SYN + ACK(요청 수락) 메시지를 보냄
  3. 클라이언트에서 ACK(서버에서 요청 수락) + 데이터 전송 보냄
  4. 연결이 서로 되고 난 뒤에 데이터를 전송함
  • 주의 : 서로 연결되었다고 하지만, 진짜로 연결되는 것이 아닌 개념적으로만 연결 된 것

  • 데이터 전달 보증

TCP/IP 에서 데이터를 전송하면 서버에서 데이털르 잘 받았다고 전달 받음
만약 데이터를 전송한 뒤에 데이터를 받았다고 전달이 안되었다면 잘못되었다고 판단


  • 순서 보장

패킷1, 패킷2, 패킷3 순서로 전송 -> 패킷1, 패킷3, 패킷2 순서로 도착할 경우 패킷3을 포함하여 그 이후로 보내진 것들을 다 버리고 패킷2 부터 다시 보내라고 전달

서버에서 최적화 할 수 있다. (내부적으로 일어날 수 있음



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

  • 연결지향 X

  • 데이터 전달 보증 X

  • 순서 보장 X

  • 데이터 전달 및 순서가 보장되지 않지만, 단순하며 빠르다.

예전에는 주로 방송을 송출할 때, 예를 들어서 축구 방송을 할 때 그런 경우 사용했다고 한다.

UDP는 IP와 거의 같으며 + PORT + 체크섬 정도 추가된다.

(체크섬에 대해서는 나중에 따로 정리한다.)



PORT

같은 IP 내에서 프로세스를 구분해주는 역할을 하는 것

  • 예시

  • 내 컴퓨터에서 게임을 하면서, 웹 브라우저를 보면 한번에 내 pc가 여러개의 서버와 통신을 한다.

  • 게임에서 오는 패킷과 웹 브라우저에서 오는 패킷 정보들을 따로 구분해야 할 경우, PORT를 이용

포트 번호

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


DNS

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

  • 도메인 명을 IP 주소로 변환

예시 )

  1. 도메인 명 google.com -> IP 주소 : 200.200.200.2 (DNS 서버에 저장을 함)
  2. 클라이언트에서 도메인 명 google.com을 입력
  3. DNS 서버에서 클라이언트에게 IP 주소로 응답을 함 -> 200.200.200.2
  4. 응답 받은 IP주소로 클라이언트가 접근

참고 : google.com의 IP 주소가 바뀌게 되더라도 DNS 서버에서 IP주소를 수정할 수 있음

profile
백엔드 개발자가 되고 싶어요

0개의 댓글