본 문서는 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 제 주관대로 정리한 글입니다.
인터넷에서 컴퓨터들은 어떻게 통신할까?
IP(Internet Protocol) - 인터넷 프로토콜
IP의 역할
- 지정한 IP 주소(IP Address)에 데이터를 전달한다.
- 데이터를 전달할 때는 패킷(Packet)이라는 통신 단위를 사용하는데 다음과 같은 정보를 포함한다.
- 출발지 IP 주소
- 목적지 IP 주소
- 전달할 데이터, 기타 등
- 패킷(Packet)은 패키지(Package)와 버킷(Bucket)의 합성어
IP의 한계
- 비연결성: 대상 서버가 패킷을 받을 수 있는 상황인지 모르기 때문에 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성: 중간에 패킷이 사라지거나 패킷이 순서대로 도착하지 않을 수 있다.
- 프로그램 구분: 같은 IP 주소를 사용하는 서버에서 통신하는 프로그램이 여러 개일 경우 구분할 필요가 있다.
TCP(Transmission Control Protocol) - 전송 제어 프로토콜
신뢰할 수 있는 프로토콜
TCP 특징
- 연결 지향적 - 3 Way Handshake (가상 연결: 논리적으로만 연결한다)
- 데이터 전달 보증 - 클라이언트가 데이터를 보내면, 서버가 데이터를 받았다는 응답을 보냄으로써 데이터가 잘 전달됐는지 확인한다.
- 순서 보장 - 클라이언트가 패킷 1, 2, 3을 순서대로 보냈을 때, 서버가 1, 3, 2 순서로 패킷을 받았다면 2부터 다시 패킷을 보내라고 요청한다.
- 현재는 대부분 TCP 사용
- TCP는 세그먼트(Segment)라는 단위로 데이터를 전달하며 다음과 같은 정보를 포함한다.
- 출발지 포트
- 목적지 포트
- 전송 제어 정보
- 순서 정보
- 검증 정보
- 전달할 데이터, 기타 등
TCP 3 Way Handshake
- 클라이언트가 서버한테 SYN(Synchronize)라는 접속 요청 메세지를 보낸다.
- 클라이언트의 SYN 메세지를 받은 서버는 ACK(Acknowledgment)라는 요청 수락 메세지와 함께 SYN 메세지를 다시 클라이언트한테 보낸다.
- 서버의 SYN + ACK 메세지를 받은 클라이언트가 다시 ACK 메세지를 보내고 서버에 도착하면 비로소 연결이 완료된다.
- 이후엔 데이터를 주고받을 수 있으며, 3번의 ACK 메세지와 함께 데이터를 보내는 것도 가능하다.
UDP(User Datagram Protocol) - 사용자 데이터그램 프로토콜
기능이 거의 없어 하얀 도화지에 비유된다.
UDP 특징
- 연결 지향 X
- 데이터 전달 보증 X
- 순서 보장 X
- 포트(Port)와 체크섬(Checksum) 정도만 추가
UDP를 왜 쓸까?
- 기능이 적은 만큼 단순하고 빠르다.
- 어플리케이션 수준에서 커스텀 하기 용이하다.
- HTTP/3에서 TCP 대신 UDP 기반으로 구글이 개발한 QUIC을 사용한다.
Port - 포트
같은 IP 내에서 프로세스를 구분한다.
- IP 주소가 아파트라면, 포트는 호수에 비유할 수 있다.
- E.g., OO 아파트 103동은 IP 주소, 401호는 포트
- 컴퓨터로 게임, 화상 통화, 웹 브라우저 요청 등 여러 작업을 한 번에 하고 있다면 어떻게 구분할 것인가? 포트로 구분한다.
- 서버에 요청을 할 때, TCP/IP 패킷에 출발지 포트도 같이 보내기 때문에 서버에서 응답할 때도 내가 요청한 포트로 응답을 보낸다.
- 포트는 0부터 65535까지 할당할 수 있다.
- 0부터 1023은 잘 알려진 포트(Well-known Port)로 겹칠 수 있기 때문에 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS(Domain Name System) - 도메인 네임 시스템
DNS를 쓰는 이유
- IP 주소는 외우기 어렵다.
- IP 주소는 변경될 수 있다.
DNS의 역할
- 인터넷 세상에서 전화번호부 같은 역할을 한다.
- 도메인 이름을 IP 주소로 변환한다.
DNS 동작 방식
| 도메인 이름 | IP 주소 |
| google.com | 200.200.200.2 |
| aaa.com | 210.210.210.3 |
- DNS 서버는 위와 같이 도메인 이름과 IP 주소가 매핑되는 테이블을 갖고 있다.
- 클라이언트가 google.com이란 도메인 이름에 해당하는 IP 주소를 찾아달라고 요청하면 200.200.200.2를 응답한다.
'Network > 모든 개발자를 위한 HTTP 웹 기본 지식' 카테고리의 다른 글
| [모든 개발자를 위한 HTTP 웹 기본 지식] 06. HTTP 상태 코드 (0) | 2022.06.20 |
|---|---|
| [모든 개발자를 위한 HTTP 웹 기본 지식] 05. HTTP 메서드 활용 (0) | 2022.06.19 |
| [모든 개발자를 위한 HTTP 웹 기본 지식] 04. HTTP 메서드 (0) | 2022.06.18 |
| [모든 개발자를 위한 HTTP 웹 기본 지식] 03. HTTP 기본 (0) | 2022.06.16 |
| [모든 개발자를 위한 HTTP 웹 기본 지식] 02. URI와 웹 브라우저 요청 흐름 (0) | 2022.06.16 |