'모든 개발자를 위한 HTTP 웹 기본 지식' 수업을 듣고 정리한 내용입니다.
🔔 인터넷(Internet)이란?
인터넷이라는 용어는 여러 통신망을 하나로 연결한다는 의미의 '인터 네트워크(inter-network
)'에서 시작되었으며, 이제는 전 세계 컴퓨터들을 하나로 연결하는 거대한 컴퓨터 통신망을 의미한다.
복잡한 인터넷망에서 통신하기 위해서는 최소한의 규칙이 있어야 한다. 이를 인터넷 프로토콜, IP
라고 한다.
- 클라이언트와 서버가 만약 바로 옆에 있다면, 인터넷이 필요없이 케이블만 연결하면 될 것이다.
- 실제 세계에서는 클라이언트와 서버가 물리적으로 굉장히 떨어져 있다.
중간에 있는 인터넷이라고 하는 서버 노드들의 집합을 통해서 통신을 하게 된다.
🔔 IP(Internet Protocol)
인터넷 환경에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음
- 지정한
IP Address
에패킷(Packet)
통신 단위로 데이터를 전달한다.- 패킷(Packet)이라는 통신 단위로 데이터 전달
패킷 : 패킷은 출발지 IP, 목적지 IP 등의 정보를 담고있다.
패킷 전달 과정
클라이언트 패킷 전달
서버 패킷 전달
패킷을 전달할 때, 패킷의 출발지 IP, 도착지 IP를 확인하면서 전달하며 최종 목적지까지 전달한다.
IP 프로토콜 한계
(1) 비연결성 : 대상이 없거나 서비스가 정상적이지 않더라도 무조건 패킷을 전송한다.
(2) 비신뢰성 : 중간에 패킷이 사라질 수도 있고, 패킷을 여러 개 보냈을 때 패킷이 순서대로 전송되지 않을 수도 있다.
(3) 프로그램 구분 : 같은 IP에서 서로 다른 애플리케이션들이 통신을 하고 있을 때 이것들은 구분하는데 한계가 있다.
위와 같은 문제점들을 해결해주는 것이 TCP 프로토콜 이다.
계층 | |
---|---|
애플리케이션 계층 | HTTP, FTP |
전송 계층 | TCP, UDP |
인터넷 계층 | IP |
네트워크 인터페이스 계층 | LAN 카드, LAN 드라이버 |
Transmission Control Protocol
(1) 연결지향
TCP3 way handshake를 통해 연결 여부를 확인하고 메세지를 보낸다.
연결지향을 보장해주는 방식
[1] 클라이언트가 서버에게 SYN(연결 요청)을 보낸다.
[2] SYN을 받은 서버는 클라이언트에서 ACK(요청 수락)의 SYN(연결 요청)을 보낸다.
[3] 마지막으로 서버에게 받은 SYN의 대답으로 ACK(요청 수락)을 서버에게 보내면서 연결이 완료된다. (데이터 전송이 완료된다!)
(2) 데이터 전달 보증
메세지를 보냈을 때 이 패킷이 제대로 전달 되었는지 확인할 때 사용한다.
클라이언트가 서버에 데이터를 전송이 제대로 완료되었으면, 서버에서 클라이언트에게 데이터를 받았다는 응답을 해준다.
(3) 순서 보장
패킷의 도착 순서를 보장해준다.
이 모든 것이 가능한 이유는 TCP/IP 패킷 안에 출발지 IP, 목적지 IP, 전송제어, 순서, 검증 정보 등 모두 들어가져 있기 때문이다.
그래서 TCP를 신뢰할 수 있는 프로토콜이라고도 한다.
만약 게임, 노래, 영화, 웹 서핑 여러 개를 할 때, 각각의 서버에서 날라오는 패킷들을 IP만으로 구분하는 것은 불가능하다.
이를 위해, TCP/IP
, UDP/IP
패킷안에는 출발지IP, 목적지IP 뿐만 아니라 출발지 PORT와 목적지 PORT가 존재해 IP와 PORT를 결합하여 패킷들을 구분한다.
클라이언트 : IP 100.100.100.1 (10010번) 으로 보낸다.
서버 : 어떻게 클라이언트 PORT 번호를 알 수 있을까?
PORT 번호
이전까지는 IP를 통해 통신했다.
ex)
클라이언트 IP : 100.100.100.1
서버 IP : 200.200.200.2
- 200.200.200.2??? : 사용하다가 끝자리가 기억나지 않을 수 있다.
- 또한, IP가 변경될 수도 있다.
➡️ 이때, 접근하기 힘들다. (IP 바꾼 사람에게 물어봐야 한다.)
Domain Name System
(1) 클라이언트가 도메인 명으로 `google.com` 을 입력한다.(2) DNS 서버에서는 도메인 명을 보고 IP 주소
200.200.200.2
를 클라이언트에게 전달(응답)해준다.(3) 클라이언트는 응답받은 IP 주소, 즉 서버 주소
200.200.200.2
로 접속하게 된다.
참고