ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • http1:
    http 2022. 6. 11. 17:14

    <모든 개발자를 위한 HTTP 웹 기본 지식 정리>

     

    IP (인터넷 프로토콜)

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

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

     

    -패킷 : 출발지 IP, 목적지 IP, 메세지 등을 가지고

    클라이언트가 - 패킷을 -> 인터넷에 보내면 인터넷망에서 목적지 IP에 도달하도록 노드를 타고타고 가서 도착한다.

     

    IP 포로토콜의 한계

    1. 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송됨 (그냥 던지는거)

    2. 비신뢰성 : 중간에 패킷이 사라질수도.. 순서대로 안올수도..

    3. 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일수도..

     

    => 해결은 TCP!

     

    : IP프로토콜의 문제점인 패킷소실과 순서꼬임을 해결함

     

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

    1.애플리케이션 계층 - HTTP, FTP (웹 브라우저, 네트워크 게임, 채팅 프로그램 - socket 라이브러리)

    2.전송 계층 - TCP(IP보완), UDP : OS

    3.인터넷 계층 - IP : OS

    4.네트워크 인터페이스 계층 (LAN 드라이버, LAN 장비)

     

     

    1. 채팅 프로그램으로 Hello, World! 메시지를 생성하면

    2. SOCKET 라이브러리를 통해서 OS계층에 이 메시지를 전달해

    3. 그러면 OS계층에서 메시지를 받아 TCP정보를 추가 포장하고 전달

    4. 그리고 그걸 받아서 IP 관련된 정보를 씌워서 IP 패킷을 생성 (메시지, TCP, IP 내용이 다 있어)

    5. 이게 네트워크 인터페이스를 통해 (LAN카드를 통해) 나갈때 Ethernet frame이 포함되어 나가

    (Ethernet frame에는 물리적인 정보들이 포함됨.. 알아서 찾아보기)

    -> 이렇게 된다

     

    TCP에 전송 제어, 순서가 들어가니까 앞서 말한 IP의 문제가 해결되는거

     

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

    특징을 보면

     

    1. 연결지향 - TCP 3 way handshake (가상 연결) : 연결을 하고 메시지 보내기 

      (1) 클 -> 서 : SYN (접속 요청) : connect, 연결 과정(연결됐냐)

      (2) 서 -> 클 : SYN + ACK(요청 수락) : 연결됨. 나도 연결해줘

      (3) 클 -> 서 : ACK + 데이터 :  OK

     

    2. 데이터 전달 보증

      (1) 클 -> 서 : 데이터 전송

      (2) 서 -> 클 : 데이터 잘 받았음 (클라이언트가 인지 가능)

     

    3. 순서 보장

      (1) 클 -> 서 : 패킷1, 2, 3 순서로 전송

      (2) but, 패킷1, 3, 2 순서로 도착

      (3) 서 -> 클 : 패킷2부터 다시 보내

     

    이건 다 TCP에 전송 제어, 순서, 검증 정보 등이 들어 있기때문에 가능함

    -> 신뢰할 수 있는 프로토콜

    => 현재는 대부분 TCP 사용

     

     

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

    - 기능이 거의 없음

    - 연결지향 - TCP 3 way handshake X

    - 데이터 전달 보증 X

    - 순서 보장 X

    - 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

    -> IP와 거의 같다. +PORT(패킷 구분) +체크섬(메시지 제대로 맞는지) 정도만 추가

    => 애플리케이션에서 추가 작업이 필요함

     

    -> 완전 도화지 그래서, 요즘은 UDP를 최적화해서 (TCP의 3 way handshake 도 줄여보자!) 사용하는 방식이 유행

     

    PORT

     

    한번에 둘 이상 연결해야 하면?

     

    클 - 1. 게임 2. 화상통화 3. 웹 브라우저 요청

     

    내 아이피로 패킷들이 들어올텐데 이게 게임인지, 화상통화껀지, 웹브라우저껀지 모름.

    -> PORT는 애플리케이션 구분하는거로 생각하기

    그니까 패킷에는 출발지 IP와 PORT, 도착지 IP와 PORT, 전송 데이터 등이 있는거

     

    - 0 ~ 65535 : 할당 가능

    - 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음

    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443

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

     

    IP의 문제점

    -IP는 기억하기 어렵다.

    -IP는 변경될 수 있다. (접근 못함)

     

    그래서, DNS는

    전화번호부 같은 서버를 제공 -> 도메인명을 IP 주소로 변환해줌

     

    1. DNS 서버에 도메인 명(google.com)을 (사서) 등록

    도메인 명 IP
    google.com 200.200.200.2
    aaa.com 210.210.210.3

    2. 클라이언트는 DNS 서버에 google.com IP를 주세여ㅐ

    3. DNS -> 클라이언트에게 응답 : 200.200.200.2

    4. 클라이언트는 200.200.200.2 접속!

     

    따라서 DNS 서버를 통해

    IP의 문제점 해결 가능!

     

     

     

    'http' 카테고리의 다른 글

    http5:  (0) 2022.06.16
    http4:  (0) 2022.06.16
    http4:  (0) 2022.06.15
    http3:  (0) 2022.06.14
    http2:  (0) 2022.06.13
Designed by Tistory.