정통과의 정리- HTTP/HTTPS

권규리·2024년 1월 15일
0

👩🏻‍💻FrontEnd

목록 보기
7/29

📢 여는 말

FE에서 HTTP 통신을 알아야할까? 했지만 BE와 이야기를 하려면 기초적인 지식을 알아두어야 한다 생각하기에 .. 라는 이유와 정통과에서 통신에 대해서 많~이도 배웠지만 시간이 지날수록 잊혀져서 정리해두려고 한다.

글에서 나오는 클라이언트는 웹 브라우저를 뜻한다.

HTTP

HTTP(HyperText Transfer Protocol), 하이퍼미디어 문서를 전송하기 위한 프로토콜이다. 주로 TCP/IP 통신을 사용하며 웹에서 이루어지는 데이터 통신의 기초이다.

HTTPS는 데이터 전송의 보안을 강화하기 위해 암호화된 HTTP의 보안 버전이다.

📝 HyperText란?

참조(하이퍼링크)를 통하여 한 문서에서 다른 문서로 즉시 접근할 수 있는 텍스트이다. 예를 들어, 흔히 작성하는 ppt에서 youtube 동영상을 참조 영상으로 보여줄 때 동영상의 주소를 하이퍼링크로 걸어두고 이를 통하여 ppt에서 youtube로 이동한다.

📝 Protocol이란?

데이터가 전송되는 방식을 결정하는 규약이다. 데이터 송신자와 수신자가 "데이터는 이런 형태로 전송해주세요 !", "에러는 이렇게 제어해서 데이터를 주고 받아요 !"와 같이 서로 통신할 때 이해할 수 있는 규칙을 만든 것이다.


TCP/IP

인터넷에 관련된 다양한 프로토콜의 집합을 뜻하며, HTTP, FTP, SNMP, TCP, IP, UDP 등이 TCP/IP에 포함된다.


📝 기본적인 프로토콜

(1) TCP: 데이터를 보내기 위해 사용하는 프로토콜

  • 연결지향형
  • UDP보다 속도 느림
  • 3-way handshaking으로 신뢰도 높음

(2) UDP: 데이터를 보내기 위해 사용하는 프로토콜

  • 비연결형 방식
    (패킷을 받을 대상이 없거나 서비스가 다운상태여도 패킷을 전송 = 연결된 노드에 모두 패킷 전송)
  • TCP보다 속도 빠름
  • UDP 헤더의 CHECKSUM 필드를 통해 최소한의 오류만 검출
  • 3-way handshaking과 같이 정보를 주고 받을 때 신호 절차를 거치지 않음
  • 신뢰성이 낮음 (ex, 패킷이 안 온다면?, 패킷이 중간에 사라진다면?)

(3) Ip: 지정한 IP주소에 데이터를 전달하는 인터넷 프로토콜

  • 비연결형 방식
  • 예를 들면, 200.200.200.2 ip가 198.198.198.0 ip에게 데이터 전달할 때 사용하는 프로토콜

(4) DNS: Domain Name Service

  • IP값은 기억하기 어렵고 변경될 수 있으므로 DNS 등장
  • IP(200.200.200.2) => 도메인명(www.google.com)
  • 통신방법) 클라이언트에서 도메인명으로 dns 서버에 값을 요청 > dns 서버에서 응답 ip 전송 > 클라이언트가 서버에 접속

(5) FTP: File Transfer Protocol

  • 파일을 전송하는 기본 프로토콜

(6) SMTP: Simple Mail Transfer Protocol

  • 메일 서버 간에 이메일 송수신

(7) SNMP: Simple Network Management Protocol

  • 다른 네트워크 장치를 원격에서 관리할 수 있는 간단한 방법을 제공하는 프로토콜
  • 평문으로 데이터를 통신하여 보안에 위험

(+) TCP의 3-way handshaking 방식

  • 클라이언트가 서버에거 접속을 요청하기 위해 SYN 패킷을 보낸다. 이때 클라이언트는 SYN/ACK 응답을 기다리는 SYN_SENT상태가 된다.

  • 서버는 클라이언트로부터 SYN 요청을 받고, 이를 수락한다는 ACK와 SYN FLAG가 설정된 패킷을 발송하고 클라이언트가 ACK로 응답하기를 기다린다. 이때 서버는 SYN_RECEIVE 상태가 된다.

  • 클라이언트는 서버에게 ACK를 보내고 이로써 클라이언트와 서버가 연결되고, 데이터가 오가게 된다. 이때 서버의 상태는 ESTABLISHED이다.


🛜 TCP/IP 4 Layer

[4계층] 애플리케이션 계층

  • 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임 결정

[3계층] 전송 계층

  • 애플리케이션 계층의 네트워크에 접속된 2대의 컴퓨터 사이의 데이터 흐름 제공

[2계층] 네트워크 계층

  • 네트워크 상에서 패킷의 이동을 다룸
  • 여러가지 길 중에 제일 효율적인 길을 결정하는 역할 = 네비게이션 🧭

[1계층] 데이터링크 계층

  • 네트워크에 접속하는 하드웨어적인 면을 다룸

💊 TCP/IP 캡슐화/역캡슐화를 통한 계층간 정보 전달


하위계층에서 상위계층으로 이동할 때마다 (사진의 송신측) 필요한 정보를 헤더에 붙이면서 캡슐화를 하고 상위계층에서 하위계층으로 이동할 때 (사진의 수신측) 헤더를 제거하는 역캡슐화를 통하여 정보를 전달한다.


🔍 URI, URL, URN이란?

URI(Uniform Resource Identifier)

  • Uniform: 리소스를 식별하는 통일된 방식
  • Resource: URI로 식별할 수 있는 모든 것
  • Identifier: 다른 항목과 구분하는데 필요한 정보

URL(Uniform Resource Locator)

  • 리소스가 있는 위치를 지정

URN(Uniform Resource Name)

  • 리소스에 이름을 부여

ex) Name: 서울역, Locator: 서울 용산구 한강대로 405
네비게이션아~ 서울역으로 가자! , 서울 용산구 한강대로 405로 가자!

한 마디로 요약하면 URL과 URN은 리소스를 표현하는 수단이라 할 수 있으며 이 둘은 URI의 하위 개념이라 생각하면 될 것 같다.


profile
기록장 📝

0개의 댓글