모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의
실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., 웹 기술을 사용하는 개발자라면 누구나 OK!꼭 필요한 HTTP의 핵심을 알려드립니다. 📣 확인해주세요!본 강의는 자바 스
www.inflearn.com
강의를 들으며 생각 정리
인터넷 통신
컴퓨터 두 대가 서로 통신할 때 클라이언트는 정보를 요청하고 서버는 정보를 제공한다.
이 때, 클라이언트와 서버가 굉장히 멀리 떨어져 있다면? 즉, 두 컴퓨터 사이에 인터넷 망이 있다면 어떻게 통신을 해야할까?
굉장히 많은 여러 중간 노드들을 거쳐서 인터넷 통신을 해야한다. 이러한 인터넷 네트워크에 대해서 알아보자.
IP(인터넷 프로토콜)
인터넷 망에서 클라이언트와 서버의 통신은 IP 프로토콜에 의해 가능해진다. 클라이언트와 서버의 IP 주소를 모두 알고 있다면 이를 패킷(Pakcet) 단위로 데이터를 전달한다.
IP 패킷 정보
- 출발지 IP
- 목적지 IP
- 전송 데이터 등...
IP 프로토콜의 한계
비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송(클라이언트 입장에서 대상 서버가 패킷을 받을 수 있는 상태인지 모른다)
비신뢰성
중간에 패킷이 사라지면? 패킷이 순서대로 안오면?
프로그램 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
-> 이러한 한계를 해결해 주는 것이 바로 TCP 프로토콜이다.
TCP, UDP
TCP
이전 IP 프로토콜은 출발지 IP, 도착지 IP, 전송 내용 등으로 패킷이 이루어져 있었다.
TCP 프로토콜은 출발지 PORT, 도착지 PORT, 전송 제어, 순서, 검증 정보 등으로 IP 프로토콜의 한계를 보완해주는 여러 정보들이 세그먼트 형태로 포함되어 있다.
TCP 프로토콜은 크게 3가지 기능이 있다.
- TCP 3 way handshake (가상 연결) - SYN(클->서), SYN+ACK(서->클), ACK(클->서)의 단계로 클라이언트와 서버의 연결성을 확보한다.
- 데이터 전달 보증 - 클라이언트가 데이터를 보냈을 때 서버는 데이터를 잘 받았다는 신호를 클라이언트에 보내 신뢰성을 확보한다.
- 순서 보장 - 클라이언트에서 보낸 패킷이 순서대로 서버에 도착하지 않았을 때 순서가 바뀐 부분부터 다시 클라이언트에 요청함으로써 신뢰성을 확보한다.
UDP
UDP 프로토콜은 거의 기능이 없는 하얀 도화지와 같다. 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.
기본적으로 IP 프로토콜과 거의 같고 여기에 PORT, 체크섬 정도의 기능이 추가된 것이다.
PORT
PORT는 클라이언트와 서버 사이에 한 번에 둘 이상 연결해야 할 때 사용한다. 즉 하나의 IP 주소 쌍 안에서도 여러 연결을 할 수 있게 한다.. IP가 아파트라면 PORT는 호수에 해당한다고 보면 된다.
0 ~ 65535 할당 가능
0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
IP는 기억하기 어렵고 후에 변경될 수도 있다. 그래서 DNS라고 하는 전화번호부 기능을 제공한다.
클라이언트에서 DNS 서버로 도메인 명을(ex. goggle.com) 요청하면 그에 해당하는 IP 주소를 제공하고 이를 통해 서버에 접속할 수 있다.
도메인 명은 기억하기 쉽고 후에 IP 주소가 변경되어도 DNS 서버 내에서 해당 주소가 변경되면 되기 때문에 클라이언트 입장에서 도메인 명만 기억하면 된다는 장점이 있다.
'http' 카테고리의 다른 글
HTTP 상태코드 (0) | 2021.04.13 |
---|---|
HTTP 메서드 활용 (0) | 2021.04.12 |
HTTP 메서드 (0) | 2021.04.12 |
HTTP 기본 (0) | 2021.04.07 |
URI와 웹 브라우저 요청 흐름 (0) | 2021.04.07 |