김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 내용을 정리한 것입니다.
인터넷 통신
WEB과 HTTP도 전부 인터넷 네트워크 기반에서 동작을 한다.
클라이언트와 서버가 통신하기 위해 인터넷 망을 이용한다.
인터넷 망은 복잡하다. 해저 광케이블이 있을 수도 있고, 인공위성을 통해서 전달할 수도 있다.
그래서 이 복잡한 망에는 규칙이 있다!
IP(인터넷 프로토콜)
IP 프로토콜 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
IP 패킷 정보
출발지 IP, 도착지 IP, message 등등
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성
- 중간에 패킷이 사라지면?
- 패킷이 순서대로 안오면?
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
TCP, UDP
이전에 IP 프로토콜에서 발생했던 수많은 문제들(패킷 소실, 순서)을 TCP 프로토콜이 해결
인터넷 프로토콜 스택의 4계층
프로토콜 계층
예시 ) Hello, world! 라는 메시지 전달하기
1. 애플리케이션 계층 ) 소켓 라이브러리를 통해서 os 계층에다가 'Hello, world!'라는 메시지 전달
2. os 계층 ) tcp가 메시지(전송 데이터)에다가 tcp 정보를 더함
3. os 계층 ) 메시지가 포함된 tcp 패킷 정보에 ip정보를 더해 ip 패킷을 생성함
4. 네트워크 인터페이스 계층 ) tcp/ip 패킷 정보를 랜카드를 통해서 나갈 때 이더넷 프레임이 포함 돼서 나감
* 이더넷 프레임 : 랜카드에 등록된 MAC 주소 등 물리적인 정보들이 포함 돼 있음
TCP
TCP/IP 패킷 정보
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등등
TCP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake(가상 연결)
1. SYN(Synchronize)
클라이언트에서 'SYN'이라는 접속 요청 메시지를 보낸다.
2. SYN+ACK
서버에서는 온 메시지를 확인하고 'ACK'로 요청 수락한 뒤, 'SYN'으로 접속 요청 메시지를 보낸다.
3. ACK
클라이언트에서는 온 메시지를 확인하고 'ACK'로 요청 수락을 보낸다.
여기서 연결되었다는건 그냥 논리적으로만 연결된 것이다. (수많은 노드를 거쳐 통신이 되는건데 연결되었는지 모른다! 그러니까 물리적으로는 확인할 수 없지만, 일단 답과 답 (SYN, ACK)이 오고간 것으로 논리적으로는 연결된 것으로 본다. 아무튼 연결된거지 뭐)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP를 사용함
UDP
UDP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
- 단순하고 빠름
- 기능이 거의 없음
- 연결지향 X - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
* PORT : 하나의 IP에서 여러 애플리케이션이 사용될 때, 여러 패킷이 IP로 도착하게 되는데 각 애플리케이션에서 오는 패킷을 구분할 때 사용
* CHECKSUM : 메시지에 대해 검증해주는 데이터
PORT
TCP/IP 패킷 정보
IP는 목적지 서버를 찾는 것
PORT는 서버 안에서 돌아가는 애플리케이션들을 구분하는 것
PORT
: 같은 IP 내에서 프로세스 구분
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443

예를들어,
게임 서버에 연결하기 위해 port가 8090에 연결하고 200.200.200.2번에 있는 11220 포트로 연결 요청을 한다.
그리고 게임 서버에서 요청에 대한 응답을 100.100.100.1번 ip의 port 8090번으로 보내준다.
DNS
IP는 기억하기 어렵고, 중간에 변경될 수도 있다.
도메인 네임 시스템(Domain Name System, DNS)
- 전화번호부
- 도메인 명을 IP 주소로 변환
DNS 사용
도메인을 구입한 후 등록하고 IP주소를 등록해놓으면, 도메인 명으로 접근했을 때 DNS 서버에서 해당 IP로 연결해서 응답을 준다.
'CS > Network' 카테고리의 다른 글
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] 6. HTTP 상태코드 (1) | 2024.01.23 |
---|---|
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] 5. HTTP 메서드 활용 (0) | 2024.01.23 |
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] 4. HTTP 메서드 (1) | 2024.01.22 |
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] 3. HTTP 기본 (0) | 2024.01.22 |
[HTTP][모든 개발자를 위한 HTTP 웹 기본 지식] 2. URI와 웹 브라우저 요청 흐름 (0) | 2024.01.16 |
댓글