각 인터넷에는 고유한 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 |