티스토리 뷰
인프런 김영한 님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 수강한 뒤 정리한 글입니다.
목차
• 인터넷 네트워크
• HTTP 기본
• HTTP 메소드
1. IP (Internet Protocol)
네트워크 계층의 프로토콜이다. 인터넷 망에서 클라이언트가 보낸 메시지를 목적지까지 보내기 위해 IP 헤더(IPv4 데이터그램 형식 참조)에 출발지와 목적지 IP 주소와 함께 전송할 데이터를 담아 보낸다.
인터넷에 전송된 패킷은 여러 노드를 거쳐 목적지(서버)에 도달하게 되며 서버는 메세지를 잘 수신했다는 정보를 담아 다시 클라이언트로 보낸다.
IP 프로토콜의 한계
그러나 IP 프로토콜이 가지는 한계점으로인해 신뢰성 있는 통신을 보장하지 못한다.
1. 비연결성
목적지의 상태를 알 수 없으므로, 패킷이 전송되는 대상이 없거나 대상 서비스가 불능상태이더라도 패킷이 전송된다.
2. 비신뢰성 (전달보증 및 순서일치 보장 X)
- 패킷이 손실될 수 있으며, 손실여부를 알 수 없다.
- 패킷이 전달되는 순서가 도착순서와 일치함을 보장하지 못한다. 이더넷 상에서 패킷의 최대크기(MTU)는 1500바이트인데 MTU를 초과하는 데이터의 경우 패킷을 분할해 전달해야 한다. 이때 각 패킷이 최종 목적지로 도달하는데 거치는 노드는 패킷마다 다를 수 있으며 이로 인해 목적지에 도착하는 패킷의 순서가 달라질 수 있다.
3. 프로그램 구분
PORT 번호가 없기 때문에 같은 IP로 여러 애플리케이션을 이용할 경우 구분할 수 없다.
2. TCP/UDP
TCP의 특징
1. 연결 지향 (3-way handshake)
목적 호스트와 연결이 되어야 메세지를 전송한다.
2. 데이터 전달 보증
목적 호스트가 데이터를 받았다면, 송신한 호스트에게 확인 메세지를 보냄으로써 패킷이도착했는지 알 수 있다.
3. 패킷 순서 보장
목적호스트에 도착한 패킷 순서가 잘못되었을 때 재전송을 요구함으로써 패킷 순서를 보장한다.
4. 신뢰할 수 있는 프로토콜
내가 전송한 데이터가 목적지까지 오류없이 전송됨을 보장한다.
UDP의 특징
TCP와 달리 기능을 거의 제공하지 않지만 애플리케이션에서 추가적인 작업을 통해 최적화가 가능하다. 전공책에서는 영상통화/동영상과 같이 중요하지 않은 데이터를 전송할때 UDP를 사용한다 했지만, 요즘은 영상통화 뿐만 아니라 거의 모든 곳에서 TCP를 사용중이다. 그러나 HTTP/3에서는 UDP 기반의 QUIC 프로토콜을 사용하고있다.
1. 비연결형
2. 데이터 전달을 보증하지 않음
3. 패킷 순서를 보장하지 않음
4. 빠른 속도
5. IP와 비슷하지만 PORT 정보와 체크섬 기능 지원
3. PORT
하나의 IP가 두개 이상의 서버에 연결되어있거나 하나의 서버에서 두 개 이상의 서비스를 제공할 때 동일한 IP를 담은 패킷이 어떤 서비스에 대한 패킷인지 구분할 수 있다.
IP는 목적지 서버를 뜻하며 PORT는 서버 안에서 돌아가는 애플리케이션을 구분한다고 볼 수 있다. TCP(네트워크 계층)의 헤더정보에 포트정보가 포함되어있다.(TCP 헤더 구조 참조)
포트범위 및 포트목록
- 0 ~ 65535
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- 1024 ~ 49151 : 등록된 포트
- FTP (20, 21)
- SSH (22)
- TELNET (23)
- DNS (53)
- HTTP (80)
- HTTPS (443)
4. DNS(Domain Name Service, System)
호스트에 접근할 때 IP를 통해 접근 한다면 사용자가 기억하기 어렵다. 또한 IP가 변경되면 새로운 IP를 알려줘야한다.
DNS는 사용자가 호스트에 접근할 때 기억하기 쉬운 도메인명을 입력하면 이를 IP주소로 변환해주는 서비스를 제공한다.
DNS 서버에 도메인명을 등록하게되면 클라이언트가 서버에 접속할 때 도메인 명을 통해 접속할 수 있게된다. (DNS의 구조와 동작원리 참조)
참조
'Computer Science > Network' 카테고리의 다른 글
모든 개발자를 위한 HTTP 웹 기본 지식 - HTTP 메소드 (0) | 2022.09.17 |
---|---|
모든 개발자를 위한 HTTP 웹 기본 지식 - HTTP 기본 (0) | 2022.09.17 |
모든 개발자를 위한 HTTP 웹 기본 지식 - URI와 웹 브라우저 요청 흐름 (0) | 2022.09.17 |
[네트워크 ]TCP 헤더구조 (0) | 2022.08.17 |
[네크워크] IPv4 데이터그램(헤더) 형식 (0) | 2022.08.12 |
- Total
- Today
- Yesterday
- C++
- 스프링
- svn
- Java
- 오류
- 데이터베이스
- HeidiSQL
- JVM
- JSP
- 이클립스
- 네트워크
- 국비교육
- 환경설정
- CSS
- 넥사크로
- 백준
- Open API
- 인턴
- 부트스트랩
- 스프링부트
- Thymeleaf
- C
- SQL
- 오라클
- 개발용어
- CS
- 프로그래머스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |