📢 여는 말
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이란?
- Uniform: 리소스를 식별하는 통일된 방식
- Resource: URI로 식별할 수 있는 모든 것
- Identifier: 다른 항목과 구분하는데 필요한 정보
ex) Name: 서울역, Locator: 서울 용산구 한강대로 405
네비게이션아~ 서울역으로 가자! , 서울 용산구 한강대로 405로 가자!
한 마디로 요약하면 URL과 URN은 리소스를 표현하는 수단이라 할 수 있으며 이 둘은 URI의 하위 개념이라 생각하면 될 것 같다.