개요
인프런 김영한 강사님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 완강하고 해당 내용을 정리하기 위해 글을 작성했습니다.
김영한 강사님이 소개 영상에서 웹쪽 영역에서 프론트엔드 개발자 백엔드를 통틀어 모든 것이 HTTP 기반 위에서 동작한다고 강조해주신 것을 눈여겨 볼 필요가 있습니다.
특히, 백엔드 개발자는 웹 기술이나, 웹 프레임워크가 모두 HTTP 기술을 베이스로 개발이 되어있기 때문에 HTTP를 모른다고 하면 깊이있게 원리를 파악하기가 쉽지 않으므로 HTTP의 기본적인 내용을 아는것은 필수 불가결로 생각됩니다.
해당 강의는 HTTP에 대한 내용을 잘 모르거나, HTTP의 전체적인 흐름과 핵심 내용을 정리하고 싶은 분들께 정말 추천드리고 싶습니다.
인터넷 네트워크
웹, HTTP는 인터넷 네트워크 망의 기반에서 동작하기 때문에 기본적인 걸 알아보도록 하자
- 인터넷 통신
- IP(Internet Protocol)
- TCP, UDP
- PORT
- DNS
Hello, world! 라는 메세지를 인터넷 통신을 통해 전송하는 모양이다.
해당 메세지는 수많은 노드들을 거쳐 안전하게 목적지에 도달하기 위해 IP주소를 사용한다.
노드?
노드는 정보를 전송, 수신 및 전달할 수있는 다른 장치의 네트워크에 있는 모든 물리적 장치이다.
컴퓨터는 가장 일반적인 노드이며 컴퓨터 노드 또는 인터넷 노드 라고도 한다.
IP(Internet Protocol)
패킷이란 통신 단위로 메세지를 보내기 위한 통신 규칙
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
패킷?
패킷은 컴퓨터 네트워크가 전달하는 데이터의 형식화된 블록이다.
전송 데이터를 전송하기 위해 나의 IP주소와 목적지 IP주소를 담은 패킷을 만든다.
IP의 한계점
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라진다면
- 패킷이 순서대로 안오면? 프로그램 구분
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면
TCP & UDP
인터넷 프로토콜 스택의 4계층
인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 모음
- 어플리케이션 계층 : 프로세스간 통신을 담당
예) HTTP, FTP, TLS/SSL - 전송 계층 : 송신자와 수신자를 연결하는 서비스에 대한 정보를 담당
- 인터넷 계층 : 패킷을 목적지로 전송하기 위한 정보를 담당
- 네트워크 인터페이스 계층 : LAN드라이버, LAN 장비등을 통해 물리적 전송을 담당
실제 채팅 프로그램이 메세지를 전달하는 모양의 예시를 위에 그림에서 참고할 수 있다.
마지막에 LAN 카드를 통해 전송될 때 Ethernet Frame을 포함해서 전송하게 된다.
TCP
전송 제어 프로토콜(Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake
클라이언트와 서버가 SYN, ACK 요청 과정을 통해 연결 확인 후 데이터를 전송하게 된다.
(실제 물리적인 연결이 아닌 논리적으로 연결이 된 것이다.)
순서 보장
TCP/IP 패킷 정보안에 전송 제어, 순서, 검증 정보를 포함하여 데이터 전달 순서를 보장한다.
UDP
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
전송 속도에 대해 최적화가 필요할 때 대안으로 사용할 수 있는 프로토콜이다.
(동영상, 이미지, ... 등등의 큰 데이터 전송)
TCP&UDP 비교
비교 | TCP | UDP |
의미 | TCP는 데이터를 전송하기 전에 컴퓨터간에 연결을 설정 | UDP는 시스템이 수신 준비가되었는지 여부를 확인하지 않고 대상 컴퓨터에 직접 데이터를 보냄 |
확장 대상 | 전송 제어 프로토콜 | 사용자 데이터 그램 프로토콜 |
연결 타입 | 연결 지향 | 연결이 적음 |
속도 | 느린 | 빠른 |
신뢰할 수 있음 | 높은 신뢰성 | 신뢰할 수 없는 |
헤더 크기 | 20 바이트 | 8 바이트 |
승인 | 사용자의 요청이있을 경우 데이터 확인 및 전송 재전송 기능이 있습니다. | 수신 확인도 걸리지도 않고 손실 된 데이터를 다시 전송하지도 않음 |
참고자료
다음 내용은 PORT, DNS, URI 에 대해서 HTTP 웹 기본지식-2 파트에서 정리하도록 하겠습니다.
'IT > Network' 카테고리의 다른 글
HTTP 웹 기본지식-5 (0) | 2022.04.16 |
---|---|
HTTP 웹 기본지식-4 (0) | 2022.03.26 |
HTTP 웹 기본지식-3 (0) | 2022.03.18 |
HTTP 웹 기본지식-2 (0) | 2022.03.13 |