💻본 포스팅은 '모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한'님의 강의를 듣고 작성되었습니다.
https://inf.run/kXeZ
[HTTP란?]
HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜입니다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 합니다. 클라이언트-서버 프로토콜이란 (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜을 의미합니다. 하나의 완전한 문서는 텍스트, 레이아웃 설명, 이미지, 비디오, 스크립트 등 불러온(fetched) 하위 문서들로 재구성됩니다.
1. 인터넷 네트워크
- 클라이언트에서 서버로 데이터(패킷)을 보낼 때 인터넷에 있는 여러 노드들을 걸쳐 클라이언트에게 전달해주게 된다.
- 이때, 물리적으로(케이블로 연결하는 등의 상황을 의미한다.) 데이터를 주고 받는 곳과 연결할 수 없는 상황이 아니기 때문에 인터넷을 사용해서 데이터를 주고 받는데, 이때 등장하는 개념이 IP(Internet Protocol)프로토콜 이다.
2. IP 프로토콜
[IP란?]
클라이언트와 서버에서 데이터를 송신, 수신할 때 사용하는 정보 위주의 프로토콜을 의미한다.
[IP 역할]
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- 우리가 데이터를 전달할 때 통신의 단위를 패킷이라 한다.
[IP 패킷 정보]
[IP프로토콜을 사용해서 패킷을 주고 받는 과정]
[IP 프로토콜의 한계]
- 비연결성
- 서버 불능과 패킷을 받을 대상이 없을 때도 패킷을 전송한다.
- 비신뢰성
- 전송 중 패킷 소실이 일어날 수 있다.
- 패킷의 전달 순서를 보장하지 않는다.
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 2개 이상일 때 이를 처리하지 못한다.
3. TCP, UDP
IP 프로토콜 사용으로 일어나는 한계점을 극복해주기 위해서 TCP, UDP를 사용한다.
[인터넷 프로토콜 스택의 4계층]
- 애플리케이션 계층
- 비지니스 혹은 특정 제품을 만들어내는 것에 따라 탄생하는 데이터 전송에 대한 약속 계층
- 데이터 전송에 관한 약속을 정하는 계층
- 전송 계층
- 물리적으로 연결하고 경로를 지정했다면 데이터를 전송해야 하는데 이 방법을 정의하는 계층
- 데이터 전송 방법을 정의하는 계층
- 인터넷 계층
- 경로를 선택하는 IP계층
- 인터넷 계층에서는 경로를 선택하는 것에만 집중해서 데이터를 보낸 뒤 이 데이터가 어디로 갔는지 순서대로 갔는지에 관해서는 신경쓰지 않는다.
- 네트워크 인터페이스 계층
- 물리적 영역을 표준화 하는 계층으로 실제 랜선을 꼽는 랜카드나 랜카드 드라이버 등이 이에 속한다.
+ 인터넷 계층(IP)과 전송 계층(TCP/UDP)는 OS에 속한다.
[프로토콜 계층]
[TCP/IP 패킷 정보]
[TCP 특징]
TCP(Transmission Control Protocol) = 전송제어 프로토콜
- 연결 지향 -TCP 3 way handshake(가상 연결)
- 데이터 전달 보증
- 순서 보증
- 신뢰할 수 있는 프로토콜로 현재는 대부분 TCP를 사용한다.
[UDP 특징]
- IP 계층 위에 TCP와 같은 계층에 있는 프로토콜로 TCP와 달라 UDP는 아무런 기능이 없다.
- IP와 거의 같은 기능으로 PORT만 추가된 개념이다.
- 그러나 매우 단순해서 속도는 빠르다.
- 애플리케이션에서의 추가적인 작업이 필요하다.
4. PORT
한 개의 IP 주소에서 여러 애플리케이션을 연결해주기 위해서 나온 개념이다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
5.DNS
DNS(Domain Name System) = 도메인 네임 시스템
- 도메인명으로 접근
- IP 주소로 응답
- IP 주소로 접속
DNS는 IP 주소가 매우 복잡하고 기억하기 어렵기 때문에 생긴 개념인데, google.com처럼 도메인을 구매해서 이를 사용해서 IP 주소에 접근하는 방식이라고 생각하면 쉽다.
'Back-End > HTTP' 카테고리의 다른 글
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] - HTTP 상태코드 (0) | 2022.02.22 |
---|---|
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] - HTTP 메서드 활용 (0) | 2022.02.21 |
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] - HTTP 메서드 (0) | 2022.02.16 |
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] - HTTP 기본 (0) | 2022.02.14 |
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] - URI와 웹 브라우저의 요청 흐름 (0) | 2022.02.14 |