인터넷 네트워크
IP (Internet / IP Protocol)
- IP : 데이터 패킷이 네트워크를 통해 이동하고 올바른 대상(목적지 서버)에 도착할 수 있도록 라우팅하고 주소를 지정하기 위한 프로토콜(규칙)
- IP의 역할 - 지정한 IP 주소에 패킷 단위로 데이터를 전달한다.
- 데이터 전송 시 출발지 IP, 목적지 IP, 메시지 데이터 등을 패킷에 넣고 전달한다.
- 패킷 (Packet) : 네트워크를 통해 전소오디는 형식화된 데이터 덩어리로 통신 단위이다.
- IP 프로토콜의 한계
- 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성 - 중간에 패킷이 사라지거나 순서대로 전달되지 않을 수 있다.
- 프로그램 구분 - 같은 IP 내에서 통신하는 여러 애플리케이션을 사용하는 경우 구분하지 못한다.
TCP, UDP
- TCP는 IP 프로토콜의 한계를 보완해준다.
- TCP는 IP 이전에 IP의 한계를 보완하는 기능을 수행해주는 역할을 한다.
- TCP/IP 4계층 (인터넷 프로토콜 4계층)
- TCP/IP 4계층의 데이터 전송 흐름
- 메시지 생성
- SOCKET 라이브러리를 사용해서 OS로 전달
- 메시지 데이터를 포함한 TCP 정보 생성
- TCP 데이터를 포함한 IP 패킷을 생성
- 이더넷 프레임에 포함되서 랜카드를 통해서 인터넷으로 나간다.
- TCP/IP 4계층의 데이터 전송 흐름
- TCP/IP 패킷 정보
- IP 패킷 데이터 + 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보....등을 함께 담는다.
- TCP (Transmission Control Protocol) : 전송 제어 프로토콜(규약, 규칙)이다.
- 연결지향 - TCP 3 way handshake (가상 연결)
- 가상 연결의 의미는 물리적으로 연결된 것이 아닌 논리적인 연결을 말한다.
- 데이터 전달 보증
- 클라이언트가 데이터를 전송을 하면 서버에서 데이터를 받았다는 응답을 보냄으로 보증한다.
- 순서 보장
- 기본적으로 잘못된 순서로 패킷이 전달되면 잘못된 순서부터 서버에서 다시 패킷 전송을 요청한다.
- 연결지향 - TCP 3 way handshake (가상 연결)
- TCP는 신뢰할 수 있는 프로토콜로 대부분 TCP를 사용한다.
- TCP 3 way handshake 과정 (SYN = 접속 요청, ACK = 요청 수락)
- 먼저 클라이언트가 서버에게 SYN를 보낸다.
- SYN을 받은 서버는 클라이언트에게 SYN + ACK를 보낸다.
- 서버의 응답을 받은 클라이언트가 서버에게 ACK를 보내면 완료.
- TCP 3 way handshake 과정은 서로 SYN 응답과 ACK 응답을 주고 받는다.
- TCP 3 way handshake 과정을 통해 연결이 되고 나면 데이터를 전송한다.
- UDP (Usser Data Protocol) : TCP/IP 4계층에서 TCP와 같은 계층에 있지만 기능이 거의 없는 IP와 유사한 프로토콜이다.
- UDP는 연결지향x, 데이터 전달 보증x, 순서 보장x
- 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.
- IP와 거의 유사하며 PORT와 체크섬 기능이 추가되어 있다.
- 애플리케이션에서 추가 작업이 필요하다.
- TCP의 handshake 과정을 더 최적화 하기위해서 UDP를 사용하기도 한다.
PORT
- PORT : 같은 IP 내에서 통신하는 여러 애플리케이션이 있을 때 구분하기 위한 개념이다.
- 같은 IP 내에서 프로세스 구분하는 용도
- IP는 목적지 서버를 찾기 위한 용도, PORT는 서버 안에서 돌아가는 애플리케이션들을 구분하기 위한 용도
- IP가 아파트라면, PORT는 동 / 호수
- PORT 번호
- 0 ~ 65535 할당 가능하다.
- 0 ~ 1023 : Well - known port(잘 알려진 포트)로 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
- DNS (Domain Name System) :전화번호부와 같은 역할로 도메인 명을 IP주소로 변환해준다.
- IP는 기억하기 어렵고 변경될 수 있는 단점을 보완해준다.
- 클라이언트가 DNS 서버에 도메인 명으로 요청을 보내면 해당 도메인 명의 IP를 응답으로 주고 IP로 서버에 접근을 할 수 있게 된다.
출처: [인프런 김영한 HTTP 웹 기본 지식]
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
모든 개발자를 위한 HTTP 웹 기본 지식 강의 | 김영한 - 인프런
김영한 | 실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연
www.inflearn.com
'Spring > [인프런 김영한 HTTP 웹 기본 지식]' 카테고리의 다른 글
[인프런 김영한 HTTP 웹 기본 지식] HTTP 상태코드 (1) | 2024.08.17 |
---|---|
[인프런 김영한 HTTP 웹 기본 지식] HTTP 메소드 활용 (0) | 2024.08.16 |
[인프런 김영한 HTTP 웹 기본 지식] HTTP 메소드 (2) | 2024.08.16 |
[인프런 김영한 HTTP 웹 기본 지식] HTTP 기본 (0) | 2024.08.16 |
[인프런 김영한 HTTP 웹 기본 지식] URI와 웹 브라우저 요청 흐름 (0) | 2024.08.16 |