[HTTP 웹 기본 지식] 시리즈는 김영한 님의 [HTTP 웹 기본 지식] 강의 내용을 바탕으로 작성하였습니다.
실무 개발에 꼭 필요한 HTTP 핵심 내용을 학습하고, HTTP의 전체 흐름을 이해할 수 있습니다.
본 강의를 참고하시면 HTTP 이해에 더욱 도움이 되실 겁니다. 🙂
인터넷 통신
📌 네트워크 인터페이스 계층
IP(Internet Protocol) 란?
인터넷 환경에서 통신 규약을 의미한다. 인터넷 프로토콜을 의미하며, 호스트 간의 통싱만을 담당한다.
지정된 IP 주소에 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.
패킷이란?
Package와 Bucket의 합성어로, 컴퓨터 간의 데이터를 주고받을 때 네트워크를 통해 흘러가는 작은 데이터 조각으로
IP 헤더를 추가하며 만들어진 것을 IP 패킷이라 한다.
IP 해더에는 출발지 IP, 목적지 IP, 기타 등의 정보가 포함되어 있다.
전송 방법
- 클라이언트에서 네트워크 계층에서 IP 헤더를 추가하여 IP 패킷을 만든다
- 패킷에 포함된 출발지 IP, 목적지 IP 등을 인터넷으로 전달한다.
- 노드 끼리 주소를 확인하여 목적지까지 도달한다
- 목적지에 성공적으로 도달한 경우, OK 메시지를 지나처온 노드를 통해 빠르게 답한다.
IP 프로토콜의 한계
- 비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송이 가능하다. - 비신뢰성
중간에 패킷이 사라지거나 패킷이 순서대로 도착하지 않았다. - 프르그램 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우 프로그램을 구분할 수 없다.
IP 프로토콜의 한계를 극복는 방법을 알아보기 전, TCP/IP 모델 4 계층을 살펴보자.
- 프로그램이 메시지를 생성한다.
- 소켓 라이브러리를 통해 전달한다.
- 메시지 데이터를 포함하여 TCP 정보를 생성한다.
- TCP 데이터를 포함하여 IP 패킷을 생성한다.
- 물리 계층을 통과하여 서버로 전달된다.
전송 계층과 인터넷 계층을 통과한 전달되는 데이터는 아래의 모습과 같다. 이를 TCP/IP 패킷이라고 한다.
📌 전송 계층
TCP
전송 제어 프로토콜(Trasmission Control Protocol, TCP)의 특징
- 연결 지향 - TCP 3 way handshake (가상 연결)
- 물리적인 연결이 아닌 가상의 약속과 같은 개념이다.
- 양쪽에서 SYN, ACK를 사용하며 클라이언트와 서버의 연결 상태를 확인한다.
TCP 3 way handshake (가상 연결)
- 클라이언트가 서버에게 접속 요청 (SYN)을 한다.
- 서버가 클라이언트에게 요청 요청 (SYN) 및 요청 수락(ACK)을 보낸다.
- 클라이언트가 서버의 요청을 수락하는 (ACK)를 보낸다.
- 데이터를 전송한다. (3과 동시에 데이터를 전송하기도 한다.)
- 데이터 전달 보증
- 클라이언트가 데이터를 전송하면 서버에서 데이터를 잘 받았다는 응답을 전달한다.
- 순서 보장
- 클라이언트가 보낸 데이터가의 순서가 다를 경우, 잘못된 순서부터 다시 데이터를 요청한다.
- TCP 세그먼트에 순서와 관련된 정보가 있기에 가능
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP를 사용한다
- (하지만 HTTP3의 등장으로 UDP의 사용 비중 또한 늘어나고 있다)
UDP란?
사용자 데이터그램 프로토콜(User Datagram Protocol)
- 특별한 기능이 거의 없기 때문에 하얀 도화지에 비유하기도 한다.
- 3 way handshake가 없기 때문에 데이터 전달이 단순하고 빠르다.
- 데이터의 전달 보증을 하지 않는다.
- 순서를 보장하지 않는다.
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
- IP와 거의 같고, PORT와 체크섬 정도만 추가된 형태이다.
PORT란 무엇인가?
IP 만으로는 어디서 필요한 패킷인지 알 수 없기 때문에 PORT를 사용한다.
같은 IP 내에서 프로세스를 구분하기 위해 PORT를 사용하며, PORT를 통해 프로세스의 구분이 가능하다.
PORT의 규칙
0 ~ 65535: 할당 가능
0 ~ 1023: 잘 알려진 포트로, 사용하지 않는 것이 좋다.
- FTP: 20, 21
- TELNET: 23
- HTTP: 80
- HTTPS: 443
DNS의 등장
도메인 네임 시스템(Domain Name System)
IP는 길고 어려우며, 변경될 수 있기 때문에 DNS를 사용한다.
DNS를 통해 도메인명을 IP로 변환하여 www.google.com을 입력함과 동시에 DNS에서 IP 주소로 변환하여 서버로 요청할 수 있게 된다.
'IT > Computer Science' 카테고리의 다른 글
[HTTP 웹 기본지식] 02. URI (0) | 2022.04.10 |
---|---|
[모두의 네트워크] 9장. 무선 랜의 구조 이해하기: 무선 랜 이해하기 (0) | 2022.04.06 |
[모두의 네트워크] 8장. 네트워크 구조 이해하기: 네트워크의 전체 흐름 살펴보기 (0) | 2022.04.05 |
[모두의 네트워크] 7장. 응용 계층: 애플리케이션 데이터 전송하기 (0) | 2022.04.01 |
[모두의 네트워크] 6장. 전송 계층: 신뢰할 수 있는 데이터 전송하기 (0) | 2022.03.30 |
댓글