Java - 기본기

웹 네트워크 기본 공부 1) 네트워크와 웹 브라우저의 요청 흐름

TerianP 2022. 8. 17.
728x90

웹 개발자에게 있어서 아마 가장 중요한 것은 자신의 개발 언어 능력일 것이다. 다만 '웹' 개발자이기 때문에 백엔드던 프론트던 결국 네트워크를 지나칠 수는 없다. 오늘은 이런 부분들에 대해서 공부해보려고 한다.

 

1. IP : 인터넷 프로토콜

  • 지정한 IP 주소 IP Address 에 데이터 전달
  • 패킷(packet) 이라는 통신 단위로 데이터 전달

출처 :https://velog.io/@haero_kim/물-흐르듯-읽어보는-TCPIP

2. IP 프로토콜의 한계

  • 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성 : 중간에 패킷이 사라지거나 패킷이 순서대로 오지 않는 경우도 발생
  • 프로그램 구분 : 같은 IP 를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우 구분이 힘듦 ⇒ 인터넷으로 2가지 일을 동시에 - 게임&음악 - 하는 경우 정확히 어떤 서비스를 위한 IP 프로토콜인지 확인하기 힘들다

 

3. TCP 와 UDP

TCP : 전송 제어 프로토콜 → 전송에 대한 제어를 위한 프로토콜

  • 연결지향 - TCP 3 Way Handshake : 논리적인 가상 연결
  • 3 Way Handshake 란? 3단계로 이루어지는 클라이언트와 서버의 연결
  • 클라이언트가 서버로 SYN 패킹 전달 → 서버는 SYN 패킷을 받은 후 ACK 와 SYN 이 설정된 패킷을 클라이언트에게 다시 전달 → 클라이언트는 서버로부터 ACK 와 SYN 이 담긴 패킷을 받고 서버로 다시 ACK 를 전달 → 데이터 전달TCP : 전송 제어 프로토콜 → 전송에 대한 제어를 위한 프로토콜

출처 : https://velog.io/@xx0hn/CS-Network-TCP-3-way-Handshake

 

UDP : 사용자 데이터그램 프로토콜

  • 연결지향 X - 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • IP 와 차이점은 PORT 정보가 추가되었다는 정도? ⇒ TCP 비교했을 때 빠르다
  • 애플리케이션 추가 작업 할 수 있기 때문에 최근 활용도가 높아지고 있음

 

4. PORT : 같은 IP 내에서 프로세스 구분

  • port 는 0 ~ 65535 ⇒ 0 ~ 1023 은 잘 알려진 포트로 사용하지 않는 것이 좋음
  • 하나의 ip 안에서 여러 프로세스를 구분하기 위해서 사용한다.
  • IP 가 아파트 라면 PORT 는 X동 X호
    • FTP : 20, 21
    • TELNET - 23
    • SSH - 22
    • HTTP - 80
    • HTTPS - 443
만약 100만명의 요청이 들어온다면!?

포트는 0 ~ 65535 로 정해져있다. 그런데 만약 100만명의 클라이언트가 동시에 서버에 접속한다면 서버에서는 어떻게 처리될까?
동일한 포트로 접속되는 요청은 서버에서 관리하게 되며 한 대의 서버당 처리할 수 있는 요청의 한계가 있음으로, 동시 접속자 수 100만 명을 처리하려면 그에 상응하는 서버(N대) 가 필요하다. 이렇게 요청에 따라 서버에 고르게 분산시키는 기술을 로드 밸런싱 이라고한다.

 

5. OSI 7계층 : 네트워크에서 통신이 일어나는 7가지 과정

  • 네트워크 인터페이스 : LAN 드라이버, LAN 장비
  • 인터넷 : IP
  • 전송 : TCP, UDP
  • 애플리케이션 : SOCKET 라이브러리, 웹 브라우저, 온라인 게임, 채팅

출처 : https://shlee0882.tistory.com/110

 

6. URI와 URL

  • URI 는 통합 자원 식별자 - Uniform Resource Identifier - 를 의미한다. 즉 URI 는 웹 기술에서 사용하는 논리적 또는 물리적 리소스를 식별하는 고유한 문자열 시퀸스이다.
    • URI 는 URL 과 URN 의 상위 개념!
    • scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
    • 프로토콜://호스트명:포트번호/패스(path)?파라미터#메인리소스에서 서브리소스로 접근
  • URL 은 Resource Locator 의 약자로 즉 자원의 위치를 가르킨다.

출처 : https://www.charlezz.com/?p=44767

 

7. 웹 브라우저의 요청 흐름

  • 채팅 프로그램 : 프로그램이 Hello world! 라는 메시지 생성 → SOCKET 라이브러리를 통해 전송 & 인터넷 계층으로 전달 → TCP 정보 생성 및 메시지 데이터를 포함시킴(전송) → IP 패킷 생성, TCP 데이터를 포함시킴(인터넷) → LAN 장비를 통해 외부로 전달
  • 이때 패킷 안에는 출발지 ip, port, 목적지 ip, port, 전송데이터(HTTP 메시지) 가 담아져 있다!
  • 전송 데이터란 GET /chat?send=hello HTTP1.1 Host:www.mychat.com 요런 느낌의 내용

 

  • 서버는 전달된 파라미터를 통해 요청 내용을 확인하고 다시 내용을 패킷에 싸서 클라이언트에게 전달!
  • 전달된 클라이언트의 웹 브라우저에서 html 을 랜더링해서 보여줌

 

- Reference

- 로드 밸런서에 관한 내용

Cross-region load balancer (preview) - Azure Load Balancer

 

Cross-region load balancer (preview) - Azure Load Balancer

Overview of cross region load balancer tier for Azure Load Balancer.

docs.microsoft.com

A Beginner's Guide to Scaling to 11 Million+ Users on Amazon's AWS - High Scalability -

 

A Beginner's Guide to Scaling to 11 Million+ Users on Amazon's AWS - High Scalability -

How do you scale a system from one user to more than 11 million users? Joel Williams , Amazon W...

highscalability.com

 

댓글