[HTTP] 인터넷 네트워크 / URI 와 웹 브라우저의 흐름

🐷Jinie (juniorDeveloper)·2021년 5월 22일
1

HTTP웹 기본지식

목록 보기
1/2
post-thumbnail

1. 인터넷 네트워크

* 인터넷 통신
* IP (Internet Protocol)
* TCP, UDP
* PORT
* DNS

1-1. 인터넷 통신

복잡한 '인터넷 망' 을 이해하기 위해서는 IP에 대한 이해가 필요하다.
단순하게 통신하면 주소라는게 필요없겠지만,

바다건너 보이지않는 곳으로까지 통신하려면 인터넷 망을 거쳐야하는데 복잡한 망을 지나 목적지까지 정확하게 가려면 목적지 주소가 필요하다.

1-2. IP

  • 지정한 IP주소에 데이터를 전달한다.
  • Packet 단위
[ IP Protocol의 한계 ] 
* 비연결성
* 비신뢰성
  • IP Protocol만 사용한다면 의문이 생긴다.
    같은 PC에서 여러 패킷을 요청할경우에는? 동시에 여러 패킷을 받게 될 경우에는?!
    이런부분을 해결하고자 TCP/UDP가 등장한다.

1-3. TCP/UDP

  • TCP는 IP의 한계를 보완해준다.
[ 인터넷 프로토콜 스택의 4계층 ]

애플리케이션계층   FTP/HTTP    웹브라우저

전송계층        TCP/UDP       OS
              IP  
              
네트워크
인터페이스계층    LAN
1-3-1. TCP (Transmission Control Protocol)
  • 연결지향 (TCP 3-ways handshake) -> 가상연결
  • 데이터 전달보증
  • 순서보장
  • 신뢰할 수 있는 프로토콜
* SYN : 연결요청
* ACK : 연결수락
  • 3-ways handshake 는 서로 연결을 확인한 후에 연결을 주고받는다.
    이때, 물리적으로 정확하게 연결된 것이 아니라 논리적으로 연결을 확인한? '가상연결'이다.
    기존에는 마지막 ACK 응답 이후에 데이터를 전송했지만,
    최근에는 ACK + 데이터 전송을 함께 진행하기도 한다.
1-3-2. UDP (User Datagram Protocol)
  • IP와 크게 다를것이 없다.
    신뢰성? 순서? 전달보증? 아무런 기능이없다.
    다만, IP와 다르게 PORT 번호나 Checksum이 추가된다.-> IP주소가 같을때 PORT 구분정도 가능하겠다.
  • 기능도 없는데 왜쓸까?
    TCP가 연결이 됐는지 안됐는지 3번이나 확인하는동안 UDP는 보내버리니까 빠르다.

1-4. PORT

  • IP는 아파트 PORT는 동호수 느낌으로 생각하라고한다.
  • 같은 IP내에서 프로세스를 구분하게 해준다.

    이런식으로 하나의 클라이언트가 채팅도하고 음악도듣고 메일도 보내고 싶을때,
    각각의 서버에서 주는 데이터가 요청한 정확한 프로세스에 들어가야하는데
    이때, 사용하는게 PORT!
* http   :  80
* https  : 443

1-5. DNS (Domain Name System)

  • IP는 기억하기 어렵다.
  • IP는 변경될 수 있다.
  • DNS는 이런 단점을 보완해준다.
  • DNS서버에 google.com이라는 도메인명의 IP가 200.200.200.3 이라고 등록해두면
    클라이언트가 google.com이라고 입력했을때 DNS서버가 IP주소를 알려주고 클라이언트는 알려준 IP주소로 통신하게된다.

2. URI와 웹 브라우저의 흐름

2-1. URI

  • URI는 Locator , Name 또는 둘다로 분류가능하다.
  • 자원이 어디에 있는지 식별할 수 있도록 한다.
  • URN : 리소스 이름
  • URL : 리소스 위치 -> URL을 주로 사용한다.
https:// www.google.com  :443     /search    ?q=hello
프로토콜     호스트명         PORT      PATH     쿼리&params
#fragment ->HTML내부이동

2-2. 웹브라우저 요청 흐름

웹브라우저에서

https://www.google.com:443/search?q=hello

를 입력하면

DNS 서버에서 www.google.com의 IP를 찾고

웹브라우저가 HTTP 요청메세지를 만든다.

GET/search?q=hello
Host:www.google.com

Socket라이브러리를 통해 TCP/IP로 전달해서 패킷을 씌우고

서버 www.google.com으로 전달한다.

도착한메세지를 서버가 확인하고

HTTP응답메세지를 전송한다.
200OK + 요청한것들

클라이언트는 서버에서 온 응답을 확인하고
HTML렌더링이 진행된다.


웹은 알면알수록 나에게 어렵게 느껴져서
계속 반복해서 보려고한다.
웹이랑 어서 더 친해지고 싶다 ㅠ.ㅠ

profile
ᴘᴇᴛɪᴛs ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ = ᴘʟᴀɪsɪʀ 💕

2개의 댓글

comment-user-thumbnail
2021년 5월 22일

유익하네요!

1개의 답글