본문 바로가기
공부/Spring

[HTTP](1) 웹 기본 지식

by 다음에바꿔야지 2024. 1. 18.

각 인터넷에는 고유한 IP(인터넷 프로토콜)가 있다.

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

패킷에는 출발지 IP, 목적지 IP, 기타 정보 등을 포함해서 클라이언트 -> 서버로 전달한다.

 

<IP 프로토콜의 한계>

*비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.

*비신뢰성: 중간에 패킷이 사라지거나, 패킷의 순서가 보장되지 않는다.

*프로그램 구분: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분이 어렵다.

 

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

애플리케이션 계층 - HTTP, FTP

전송 계층 - TCP, UDP

인터넷 계층 - IP

네트워크 인터페이스 계층 - LAN 드라이버, LAN 장비

 

순서

1. 애플리케이션에서 프로그램이 메시지를 생성한다.

2. SOCKET 라이브러리를 통해 TCP에 전달한다.

3. 메시지 데이터를 포함한 TCP 정보를 생성 후 IP에 전달한다.

4. TCP 데이터를 포함한 IP 패킷을 생성 후 LAN 카드에 전달한다.

5. 서버에 전달한다.

 

<TCP(Transmission Control Protocol: 전송 제어 프로토콜)의 특징>

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

*데이터 전달 보증: 데이터를 수신하면 잘 받았다고 응답해준다.

*순서 보장: 1, 2, 3 순서로 보냈는데 1, 3, 2로 받았다면 2부터 다시 보내라고 한다.

*신뢰할 수 있는 프로토콜이라 현재는 대부분 TCP를 사용한다.

 

3 way handshake는 클라이언트 - 서버간 연결시에 사용하는 방식이다.

1. 클라이언트 -> 서버: SYN(접속 요청)

2. 서버 -> 클라이언트: SYN+ACK(요청 수락)

3. 클라이언트 -> 서버: ACK(수락 확인)

4. 데이터 전송

(*3. ACK과 함께 데이터 전송이 가능하다.)

 

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

하얀 도화지같이 기능이 거의 없다. 그래서 애플리케이션에서 추가 작업이 필요하다.

단순하고 빠르다.

 

 

<PORT>

클라이언트가 한번에 두 서버에 연결해야한다면?

그럴때를 대비해서 같은 IP내에서 프로세스 구분을 위해, PORT가 필요하다.

 

<DNS(Domain Name System)>

IP주소는 숫자로 되어있어 기억하기가 어렵다.

도메인 명을 IP 주소로 변환하는 시스템이다.

도메인 명을 검색하면 DNS 서버에서 IP를 응답해 클라이언트는 이를 통해 서버에 전달하는 로직이다.

 

 

'공부 > Spring' 카테고리의 다른 글

[HTTP](3) HTTP 메서드  (0) 2024.01.18
[HTTP](2) URI, HTTP  (0) 2024.01.18
[스프링 핵심](9) 웹 스코프  (0) 2024.01.18
[스프링 핵심](8) 빈 스코프  (0) 2024.01.18
[스프링 핵심](7) 빈 생명주기 콜백  (0) 2024.01.16