본문 바로가기
HTTP

[HTTP 웹 기본 지식] 1 - 인터넷 네트워크

by 쿠쿠씨 2022. 5. 27.
반응형

본 글은 김영한 님의

[모든 개발자를 위한 HTTP 웹 기본 지식] 강의를 듣고 정리한 내용입니다.

 

IP (Internet Protocol, 인터넷 프로토콜) 


IP의 역할

지정한 IP 주소에 데이터를 전달합니다.

패킷(Packet)이라는 통신 단위로 데이터를 전달합니다.

 

IP 패킷

출발지 IP, 목적지 IP, 전송할 데이터를 IP 패킷에 담아 전달합니다.

노드들을 따라 이동하여 목적지 IP까지 패킷을 전송합니다.

 

IP 프로토콜의 한계

비연결성

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

 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모릅니다.

 

비신뢰성

 패킷이 중간에 사라지거나 (패킷 소실)

 전송한 패킷이 순서대로 도착하지 않는 경우

 

프로그램 구분

 애플리케이션 여러 개(음악 듣기, 게임 등)가 같은 IP를 쓰고 있는 경우

 

→ TCP 프로토콜로 IP 프로토콜의 문제를 해결할 수 있습니다.

 

TCP (Transmission Control Protocol, 전송 제어 프로토콜)


인터넷 프로토콜 스택의 4계층

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층

 

프로토콜에서 메시지 전송 순서

애플리케이션 계층

1. 프로그램이 메시지 생성

2. SOCKET 라이브러리를 통해 전달

전송 계층

3. TCP 정보 생성, 메시지 데이터 포함

인터넷 계층

4. IP 패킷 생성, TCP 데이터 포함

네트워크 인터페이스 계층

5. LAN 카드에서 이더넷 프레임(MAC 주소)을 씌워 서버로 전송

 

TCP / IP 패킷

IP 패킷 안에 TCP 정보가 담겨 있습니다.

 

TCP 프로토콜의 특징

전송 제어, 순서, 검증 정보가 들어 있어 다음 특징이 있습니다.

 

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

연결이 되었나 확인하고 메시지를 보냅니다. → 비연결성 해결

 

데이터 전달 보증

패킷이 누락되면 알 수 있습니다. → 비신뢰성(패킷 소실) 해결

 

순서 보장

순서가 바뀌면 알 수 있습니다. → 비신뢰성(순서 오류) 해결

→ TCP는 신뢰할 수 있는 프로토콜이며, 현재는 대부분 애플리케이션에서 TCP를 사용합니다.

 

TCP 3 way handshake

클라이언트 서버

1.SYN   

 클라이언트에서 서버로 SYN(접속 요청)을 보냅니다.

2. SYN+ACK  

 서버에서 클라이언트로 SYN+ACK(요청 수락)을 보냅니다.

3. ACK(최근에는 데이터도 함께 전송)  

 클라이언트에서 서버로 ACK과 함께 데이터를 전송합니다.

 

*  3way handshake는 물리적 연결이 아니라 논리적 연결입니다.

 

데이터 전달 보증

클라이언트  서버

1. 클라이언트에서 서버로 데이터를 전송합니다.   

2. 서버에서 클라이언트로 데이터를 잘 받았다고 전송합니다.   

 

순서 보장

클라이언트  서버

1. 클라이언트에서 서버로 패킷1, 패킷2, 패킷3 순서로 전송합니다.   

2. 서버에 패킷1, 패킷3, 패킷2 순서로 도착합니다.

3. 서버에서 클라이언트로 패킷2부터 다시 보내라고 전송합니다.    

 

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


UDP 프로토콜의 특징

기능이 거의 없습니다.(하얀 도화지)

IP와 거의 같습니다. + PORT +체크섬(메시지 검증해주는 데이터) 추가

TCP는 3way handshake를 하는 등 시간이 걸립니다. 데이터 양도 크고 전송 속도를 빠르게 만들기 어렵습니다. 

 UDP를 가지고 최적화할 수 있습니다.

 

PORT


PORT로 같은 IP 내에서 프로세스를 구분합니다.

IP는 출발지와 목적지를 구분하기 위한 것이고, PORT는 한 IP 내의 여러 애플리케이션을 구분하기 위한 것입니다.

 

0~65535 할당 가능

0~1023 : 잘 알려진 포트,  사용하지 않는 것이 좋습니다.

FTP - 20, 21

TELNET - 23

HTTP - 80

HTTPS - 443

 

DNS (Domain Name System, 도메인 네임 시스템)


IP 주소는 기억하기 어렵고, 변경될 수 있습니다.

→ DNS 서버에 도메인 명을 등록하여 해결할 수 있습니다. (전화번호부)

클라이언트가 도메인 명으로 요청을 하면 DNS 서버에서 도메인 명을 IP주소로 변환하여 클라이언트에 응답합니다.

클라이언트는 받은 IP 주소로 서버에 접속합니다.

 

 

References

인프런 강의 [모든 개발자를 위한 HTTP 웹 기본 지식]

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

반응형

'HTTP' 카테고리의 다른 글

[HTTP 웹 기본 지식] 3 - HTTP 메서드, 활용  (0) 2022.06.07
[HTTP 웹 기본 지식] 2 - URI, HTTP 기본  (0) 2022.05.31

댓글