HTTP

[HTTP] 인터넷 네트워크

EJUN 2023. 12. 22. 21:28

네트워크란?

노드들이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나

→ 분산되어 있는 컴퓨터를 통신망으로 연결하는 것

노드란?
네트워크에 속한 컴퓨터 또는 통신 장비를 뜻하는 말

IP통신

http 통신방식

클라이언트가 Socker(파일)을 전송 → 인터넷에 있는 수많은 노드를 통해 → 서버로 전송

 

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

IP의 역할

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

위의 사진을 보면 클라이언트에게도 IP주소가 있고, 데이터를 받는 서버에도 IP주소가 있다.

즉, 어떠한 데이터를 보낼 때 최소한의 규칙이 필요한데 이를 패킷이라는 규칙으로 전송함

IP 패킷정보

IP패킷에는 클라이언트의 IP주소, 서버의 IP주소등을 담고 있음 → 최소한의 규칙

 

  • 클라이언트가 패킷에 데이터, 각 IP주소등을 담아 전달을 하면 인터넷망에 있는 노드들을 거쳐 도착지의 IP로 향함

  • 서버는 받은 패킷정보들에 대해 상태코드처럼 데이터를 넣어서 다시 클라이언트에게 패킷을 전달함

IP 프로토콜의 한계

위의 사진을 보면 클라이언트가 서버로 데이터를 전송하는데 IP프로토콜 통신 방식의 경우에는 대상 서버가 ON/Off의 상태인지는 고려하지 않고 계속해서 데이터를 보냄

→ 즉, 데이터가 잘 전송이 됐는지 확인이 불가함

 

위 사진은 위에서 말했던 것처럼 인터넷망에는 수 많은 노드들이 존재한다고 했는데, 수 많은 노드들을 통해 패킷을 전달할 때 어떤 노드에 문제가 발생하여서 중간에 데이터들의 유실 가능성이 있음

 

  • 패킷 전달 순서 문제 발생

보틍 데이터들을 전송할 때 용량이 크면 해당 데이터를 분리해서 전송을 하는데

분리된 여러개의 패킷이 이동할 때 가장 빠른 노드를 선택해서 전송을 하는데 이때, 서버에는 패킷의 순서가 변경되어서 전달이 될 수 있음

 

TCP/UDP

위의 IP프로토콜의 문제점을 보완해주는 통신방식이 바로 TCP이다.

클라이언트가 데이터 전송 → Socker(파일)을 통해 데이터를 전달

→ TCP를 통해 해당 Socket을 감쌈 → 넘어온 TCP를 IP로 감쌈 → Driver를 통해 NIC에게 전달

 

TCP구조

TCP의 특징

  • 연결지향 - TCP 3 way handshake(가상연결)

  • SYN → 접속 요청
  • ACK → 요청 수락
  1. 처음에 클라이언트가 서버에게 접속이 가능한 상태인지 SYN을 전달
  2. 서버가 깨어있다면 SYN을 다시 클라이언트에게 보내고 클라이언트가 보낸 요청에 대한 수락을 의미히는 ACK도 같이 전달
  3. 클라이언트도 ACK를 다시 서버에게 전달(최근에는 동시에 데이터도 전달)

*위의 전달은 진짜 연결이 아닌 개념적으로 연결되어있음을 의미 → 인터넷 망에 있는 많은 노드들이 깨어있는지는 모름

  • 데이터 전달 보증 

  • 전달하는 데이터에 TCP가 있다면 클라이언트가 보낸 데이터가 서버가 잘 받았다면 다시 서버가 클라이언트에게 데이터 전송유무를 보냄

위의 사진처럼 상태코드를 전송해서 클라이언트가 알 수 있음

 

  • 순서 보장

  • IP프로토콜의 문제점 중 하나가 패킷을 여러개로 분리하고 전송을 했을 때 순서가 맞지 않게 전송이 될 수 있는데 TCP는 순서가 잘못오면 순서가 맞지 않는 부분부터 다시 전송하라고 클라이언트에게 요청함
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 90% 이상 TCP 사용

 

UDP의 특징

  • TCP 3way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • UDP는 위의 과정이 필요없기 때문에 상대적으로 속도가 빠름
  • IP프로토콜과 거의 동일 + PORT + 체크섬 정도 추가
  • 애플리케이션에서 추가 작업이 필요

PORT 란?

  • 네트워크 서비스나 특정 프로세스를 식별하는 식별단위이다.
    • 한 대의 컴퓨터에서 여러 개의 프로그램이 동시에 실행이 되서 어떤 프로그램에 접속하려는지 알려줘야하는데 이때 어떤 프로그램에 접속할지 알려주는 것이 PORT이다!

http**://127.0.0.1:8080 ⇒ 127.0.0.1은 IP주소, 8080이 PORT

PORT  프로토콜  용도
22 SSH Secure Shell - ssh, sftp같은 프로토콜 및 포트 포워딩
80 HTTP 웹 페이지 전송 프로토콜
443 HTTPS HyperText Transfer Protocol over Secure Sockets

 

DNS (Domain Name System : 도메인 네임 시스템), 네임서버

IP같은 경우는 숫자로 되어있고 연결되어 있는 네트워크의 종류가 바뀌면 변경되기 때문에 불편함

  • 위의 사진처럼 도메인은 IP주소를 대신해서 사용하는 주소
  • DNS처리 순서
    1. 브라우저에 google.com을 입력
    2. DNS에서 해당 도메인에 등록된 IP주소를 찾음
    3. 찾은 IP주소를 이용해 해당하는 웹 서버로 요청을 전달
    4. 클라이언트와 서버가 통신
📌 DNS는 UDP로 동작함
1. DNS질의는 신뢰성보다 빠른 응답시간이 더 중요함
2. 연걸상태를 유지할 필요가 없음