본문 바로가기
백엔드 공부/HTTP 기본 지식

인터넷 네트워크 : 모든 개발자를 위한 HTTP 웹 기본 지식

by CSEGR 2024. 2. 28.
728x90

(인프런) 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 공부하고 리뷰한 글입니다.

인터넷 통신

클라이언트 와 서버 사이에서 안전하게 데이터들이 안전하게 도착할까 ?

이를 알기 위해서 다음 개념들을 알아야한다. 

 

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

= ( IP 주소를 부여하고 목적지를 찾아가는 방식)

클라이언트와 서버에는 IP adrress 가 주어진다. 

IP 패킷 : 출발지 IP, 도착지 IP, 메세지 ...

클라이언트 패킷 전달

 ex) 클라이언트 IP 주소가 100.100.100.1 이고 서버 IP 주소가 200.200.200.1인 경우

       IP 패킷은 100.100.100.1 200.200.200.1 "Hello world" ... 로 구성되어 있음.

이 IP 패킷이 클라이언트로 부터 서버에 가기 까지 여러 노드들을 거친다. 

서버 패킷 전달

IP 프로토콜의 한계

• 비연결성

   - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 (즉, 받을 대상이 패킷을 받을 수 있는지 여부 모름)

• 비신뢰성

   - 중간에 패킷이 사라지면?

   - 패킷이 순서대로 안오면? ( 데이터가 크면 끊어서 n개로 보내는 경우 : 의도되지 않은 데이터 순서 ) 

• 프로그램 구분 

   - 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이라면?

 

TCP & UDP 

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

1. 프로그램에서 "Hello, world!" 메세지를 보내고자 함. 

2. SOCKET 라이브러리를 통해서 OS 계층에다가 메세지를 보냄. 

3. 메세지에다가 TCP 정보를 씌움. 

4. 그 위에다가 IP에 관련된 정보를 또 씌움. => ip 패킷 생성 

5. 네트워크 인터페이스 계층의 LAN 카드를 통해서 ip 패킷이 나갈 때 이더넷 프레임이 포함되서 나감. 

 

TCP/IP 패킷 안에는 출발지 port, 목적지 prot 전송 제어, 순서( -> 순서 보장이 되는 이유), 검증 정보 등이 들어감. 

 

➕TCP 특징 = 전송 제어 프로토콜 
1. 연결 지향 - TCP 3 way handshake (가상 연결 = 물리적 연결이 아니다. )
2. 데이터 전달 보증 ( = 서버가 데이터를 받으면 받았다고 응답해줌  )
3. 순서 보장 ( = 순서가 잘못된 패킷부터 다시 요청 ) 
4. 신뢰할 수 있는 프로토콜 
5. 현재는 대부분 TCP 사용중 

TCP 3-way handshake

SYN : 접속 요청 / ACK : 요청 수락 / 3. ACK 와 함께 데이터 전송 가능 

1. 클라이언트 에서 서버로 SYN (접속 요청 ) 보냄. 

2. 서버에서 클라이언트로 ACK ( 요청 수락 )을 보내면서 본인도 연결해달라고 SYN 보냄. 

3. 그 SYN 에 해당되는 ACK 보내면서 데이터도 같이 보냄.

 

 

➔UDP 특징 = 사용자 데이터그램 프로토콜 ( User Datagram Protocol)
1. 하얀 도화지 ( 기능 거의 없음 )
2. 연결 지향 X
3. 데이터 전달 보증 X 
4. 순서 보장 X
5. 데이터 전달과 순서가 보장되지 않지만, 빠르고 단순함. 

 

PORT

클라이언트가 한 서버에서 여러 개의 어플리케이션을 수행하는 경우, 서버로 부터 온 패킷이 어디로 부터 요청된 패킷인지 알 수 없다. 이를 위해 존재하는 개념.

 즉, 각 프로세스마다 다른 PORT가 부여된다. 

IP : 목적지 서버를 구분함. 

PORT :  그 서버 안에서 돌아가는 목적지 어플리케이션을 구분함.

패킷 구성 요소

< PORT 번호 > 0~ 65535 할당 가능 

0~1023 : 잘 알려진 포트번호( 사용하지 않는 것이 좋음 )

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

 

 

DNS 

"IP 번호를 기억하기 어렵다. IP 주소는 변경될 수 있다. "는 문제점. 

DNS ( = Domain Name System ) 도메인 네임 시스템 
- 비유 : 전화번호부 와 같은 역할
- 도메인 명을 IP 주소로 변환 

1. 도메인과 해당하는 IP 주소를 DNS 서버에 등록해놓는다. ( 전화번호부 처럼)

2. 클라이언트가 도메인 명 google.com 을 찾으면 DNS 서버에서 해당되는 IP 주소를 클라이언트로 보낸다. 

3. 받은 IP 주소로 접근한다. 

 

 

 

728x90