HTTP를 위해 네트워크의 기본 지식이 필요하다. 만약 클라이언트와 서버가 바로 옆에 붙어 있다면 그냥 바로 옆에서 통신을 하면 될 것이다. 그러나 만약 클라이언트와 서버거 멀리 떨어져있다고 생각해보자. 이런 경우엔 중간에 인터넷망이 있어 데이터를 안전하게 전송하기 위한 방법을 생각해야 하는데 이를 위해 먼저 IP에 대해 알아보도록 하자.
IP (Internet Protocol)
클라이언트와 서버에 IP 주소를 부여하면 IP의 역할은 다음과 같다.
- 지정한 IP 주소(IP Address)에 데이터를 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
IP 패킷에는 출발지 IP, 목적지 IP, 전송 데이터 , 기타 .... 등의 정보가 담겨있다.
따라서 클라이언트측은 출발과 목적지 IP , 전송 데이터를 서버측에 전달하고 ,
이를 수신한 서버측은 다시 출발과 목적지 IP, 수신 응답데이터를 클라이언트 측에 전달한다.
IP프로토콜의 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성 : 중간에 패킷이 사라지거나, 패킷이 순서대로 서버측에 도착하지 않을수도 있다.
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 ? (게임, 음악재생 등)
이러한 문제들을 바로 TCP 프로토콜이 해결해준다.
TCP, UDP
프로토콜 계층
예를 들어, 채팅 프로그램을 사용한다고 가정해보자.
1. 프로그램이 Hello, world! 메시지를 생성한다.
2. SOCKET 라이브러리를 통해서 OS 계층으로 전달한다.
3. 전송 메시지를 TCP 정보를 생성하여 감싸주고
4. IP 패킷을 생성하여 다시 한번 감싸준다 (IP → TCP → 전송 메시지 순으로 정보가 담겨있음)
5. LAN 카드로 서버에 보낸다 (Ethernet frame)
최종 그림
TCP 특징
전송 제어 프로토콜 (Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜로 현재는 대부분 TCP를 사용한다.
TCP 3 way handshake
1. 클라이언트가 SYN 요청을 서버측에 전달함
2. 서버측에서 요청을 받고 다시 클라이언트측에 SYN 요청과 응답을 보냄
3. 클라이언트측에서 서버측의 요청을 응답하는 메시지를 보내면 클라이언트와 서버측은 서로를 신뢰함
데이터 전달 보증
순서 보장
UDP 특징
사용자 데이터그램 프로토콜 (User Datagram Protocol)
- 하얀 도화지에 비유 (기능이 거의 X)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증, 순서 보장 XXXX
- 데이터 전달과 순서가 보장되지 않지만 그만큼 단순하며 속도가 빠르다.
- 정리 : IP와 거의 같으며 + PORT +체크섬 정도만 추가
PORT
클라이언트에서 한번에 둘 이상의 서버와 연결할 때 구분하기 위해 사용하는데 IP의 한계인 프로그램 구분과 연관지을 수 있다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것을 권장
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS (Domain Name System)
- IP는 기억하기 어려울 뿐더러 변경 가능성이 존재한다.
- DNS 는 전화번호부에 비유할 수 있다.
- 도메인 명을 IP 주소로 변경
IP가 200.200.200.2 를 도메인 명 google.com으로 등록하면 클라이언트 측에서는 도메인 명을 DNS 서버측에 요청하게 되고 DNS 서버는 해당 도메인 명을 매핑하며 IP주소를 반환해주면 해당 IP주소를 통해 서버측에 요청을 한다.
이렇게 되면, 어려운 IP 주소를 외우지 않아도 될 뿐더러 IP주소가 변경되더라도 도메인 명만 알면 된다.
정리
1. 결국 IP의 한계를 극복하기 위해서 TCP가 도입되었다.
2. UDP는 IP와 비슷한데 PORT가 추가되었고 필요하면 애플리케이션에서 기능확장이 가능하다.
3. PORT는 같은 IP 안에서 동작하는 애플리케이션을 구분하기 위해 사용하며 IP가 아파트라면 port는 동호수이다.
4. DNS는 변경될 수 있고 외우기 힘든 IP를 대신해 사용하며 DNS 서버를 통해 관리된다.
참고 자료
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., - 강의 소개 | 인프런
www.inflearn.com