HTTP

(HTTP)인터넷 네트워크

odong2 2022. 5. 23. 00:21

 

✏️인터넷(Inter Network)이란?

여러 통신망을 하나로 연결한 것으로 전 세계 컴퓨터를 하나로 연결한 것을 의미

컴퓨터 두 대 간의 통신을 살펴보자.

각 컴퓨터는 클라이언트와 서버로 구분된다. 요청하는 컴퓨터를 클라이언트, 요청을 받아 응답을 하는 컴퓨터를 서버라고한다.

클라이언트에서 Hello, world!라는 메시지를 서버에게 보낼 때 수많은 노드라는 서버를 거쳐서 메시지가 안전하게 전달된다.

그럼 이과정에서 메시지를 어떻게 전달할까?

메시지를 전달하기 위해서는 아래와 같은 프로토콜, 즉 규약에 따라 메시지를 전달하게 된다.


1. IP(인터넷 프로토콜)

인터넷 프로토콜의 역할은 지정한 IP주소에 패킷 단위로 데이터를 전달한다.
패킷 단위로 쪼개서 전달하는 이유는 데이터를 크게 보내면 데이터가 원활하게 전달되지 못하기 때문이다.

 Hello,world!를 서버로 보내는 과정을 살펴보자

전송할 데이터를 IP 패킷으로 감싸서 데이터를 전송하는데 IP 패킷에는 출발지 IP, 목적지 IP를 포함한다. IP 패킷을 만들어 노드에 던지면 IP 프로토콜에 의해서 출발지와 목적지를 각 노드들이 이해하므로 서로 노드끼리 던지면서 최종적으로 목적지에 도달하게 된다.

클라이언트가 요청할 때와 서버가 응답할 때 각 노드들은 인터넷 망의 복잡성에 의해 서로 다른 곳으로 던질 수 도 있다.

* 데이터는 HTTP형식으로 작성된다

📌 IP 프로토콜의 한계

① 비연결성

패킷을 받는 대상이 없거나 서비스 불능 상태여도 패킷 전송

② 비신뢰성

중간에 패킷이 사라지거나 순서대로 오는 것에 대해 보장 X

③ 프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 어플 구분 X


2. TCP

이러한 IP프로토콜의 한계들로 인해 등장한 것이 TCP이다.

먼저 프로토콜 계층도에 의해서 데이터를 전달하는 과정을 살펴보자.

1. 웹브라우저나 채팅프로그램등 응용프로그램에 의해서 전달하고자 하는 메시지를 생성한다
2. socket 라이브러리를 통해 os게층에 전달한다
3. 메시지에 TCP를 씌우고 IP에 전달한다
4. TCP 데이터를 포함하여 IP 패킷을 생성한다
5. 랜카드에 의해 이더넷 프레임, 즉 랜카드에 등록된 mac주소 포함되어 전송된다

📌 TCP 특징

TCP는 전송 제어 프로토콜로 크게 3가지의 특징을 가진다.

① 연결 지향 - 3 way handshake (가상연결)

② 데이터 전달 보증

③ 순서 보장

2-1) TCP 3 way handshake

그림과 같이 클라이언트와 서버 간에 SYN(접속 요청)과 ACK(요청 수락)을 세 번 주고 받으면서 연결이 되었다고 인식을 하게 되면 그 다음으로 데이터를 전송하는 방식이다.

여기서 클라이언트와 서버는 진짜 연결이 된 것이 아닌 논리적으로 연결이 된 것이다.

이로 인해 해결할 수 있는 문제의 예로 클라이언트에서 SYN을 보냈는데 서버가 응답 없으면 연결이 되지 않고 메시지도 보내지 않는다.<IP프로토콜의 비연결성을 해결>

다만 단점은 3 handshak로 인해전송속도가 느려진다. 특히 패킷을 추가하면 데이터 양도 크고 전송속도도 빠르게 하기 어렵다.

2-2) 데이터 전달 보증

클라이언트에서 데이터를 전송하면 서버가 데이터를 받았다고 응답을 해준다.
서버에서 응답이 없다면 서버에 문제가 있는 것이다.

2-3) 순서 보장

IP에 의해 던져진 패킷은 각 노드들을 타고 서버에 도착하게 되는데 IP에는 순서에 대한 정보가 없었기 때문에 순서를 보장하지 않았다. 하지만 TCP는 순서에 대한 정보를 가지고 있기 때문에 순서를 보장한다. 위의 그림에서 패킷 3번이 순서가 잘못 들어왔기 때문에 서버는 클라이언트에게 패킷 2번부터 다시 보내라고 요청한다.

2-4) PORT

같은 IP 내 프로세스 구분하는 역할을 하는 것을 port라고 한다.


TCP에는 이러한 port정보를 포함하고 있으며 TCP와 IP를 합쳐서 TCP/IP패킷이라 한다.

위의 그림에서 처럼 200.200.200.2에 있는 1120 PORT로 연결하여 패킷을 쏘면 게임 서버에 연결되는 것이다. 이렇게 서버에서 내 IP와 PORT를 알고 보낼 수 있는 이유는 클라이언트가 보낸 패킷 정보에 내 IP와 PORT의 정보가 담겨 있기 때문이다.

IP가 아파트라고 비유를 한다면 port는 몇 동 몇 호 인지를 나타낸다.

포트는 0~ 65535까지 할당이 가능하고 0 ~ 1023까지는 잘 알려진 포트로 사용하지 않는 것이 좋다.

FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443

 


3. UDP

사용자 데이터그램 프로토콜(User Datagram Protocol)

📌UDP특징

① 3 way handshake X

② 데이터 전달 보증 X

③ 순서 보장 X

④ 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.

⑤ IP와 거의 같지만 PORT + 체크섬이 추가


정리

💡 복잡한 인터넷 망에서 데이터를 주고받기 위해서 프로토콜 규약을 따른다.
💡 전송하고자 하는 데이터는 HTTP형식으로 작성되고 프로토콜 계층도에 따라 순차적으로 데이터가 처리되고 전송된다


 

위 글은 인프런 김영한 선생님의 <모든 개발자를 위한 HTTP 웹 기본 지식> 수강 후 PPT를 활용하여 작성하였음을 알려드립니다