[HTTP] 웹 기본 지식 정리 - 인터넷 네트워크
- 이 게시글은 인프런 "모든 개발자를 위한 HTTP 웹 기본지식"의 김영한님 강의를 보고 요약한 내용입니다.
1. 인터넷 통신
클라이언트가 서버에게 어떻게 메시지를 전달할 수 있을까? 에 대한 생각을 해볼 수 있다.
▶ 일반적으로 클라이언트가 메시지를 보낼 경우 서버가 메시지를 받고 오케이 응답을 보내게 된다.
하지만 클라이언트와 서버 사이엔 복잡한 인터넷망이 있다 !!
광케이블, 인공위성 등 중간노드가 다양하게 존재하는 인터넷망이 있다고 생각해본다.
그럼 어떻게 메시지를 전달할 수 있을까?
▶ IP 주소를 부여하여 전달할 수 있다.
2. IP(Internet Protocol)
지정한 IP주소에 패킷이라는 통신단위로 데이터를 전달한다.
ex ) 클라이언트 IP 주소 : 100.100.100.1 → 서버 IP 주소 : 200.200.200.2
출발지 IP 주소와 목적지 IP 주소를 넣은 패킷을 서버에게 전달한다.
→ 노드들이 목적지 IP 주소로 전달한다.
→ 목적지 IP 주소인 서버에게 패킷이 전달된다.
→ 정상적으로 패킷을 받았을 경우, 서버가 같은 방식으로 클라이언트에게 오케이 응답을 포함한 패킷을 전달한다.
IP의 한계
- 비연결성 - 패킷 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송함
- 비신뢰성 - 패킷이 중간에 손실될 수 있으며 순서대로 전송이 안될 수 있음
- 프로그램 구분 - 같은 IP를 사용하여 서버 통신하는 애플리케이션이 둘 이상일 경우
이러한 IP의 문제해결을 위해서?
▶ TCP, UDP
3. TCP(Transmission Control Protocol) & UDP(User Datagram Protocol)
TCP는 전송 제어 프로토콜이며 UDP는 사용자 데이터그램 프로토콜이다.
IP 패킷의 정보 - 출발지 IP, 목적지 IP, 전송데이터 등
TCP/IP 패킷 정보 - 출발지 IP, 목적지 IP, 전송데이터, 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증정보 등
TCP 특징
- 연결지향 - TCP 3 way handshake
- 데이터 전달 보증
- 순서 보장
- 신뢰성있는 프로토콜
UDP 특징
- 기능이 거의 없음
- 비연결지향
- 데이터 전달 보증이 안됨
- 순서 보장이 안됨
- 단순하고 빠름
- IP와 유사하지만, PORT와 checksum 정도만 추가된 정도
4. PORT
IP는 목적지 서버를 찾는 것이라면 PORT는 서버안에서 돌아가는 애플리케이션을 구분하는 것이다.
IP가 아파트면 PORT는 몇동몇호를 의미
- 같은 IP내에서 프로세스를 구분
- 0 ~ 65535 할당 가능(HTTP - 80, HTTPS - 443)
5. DNS(Domain Name System)
IP 주소는 기억하기 어려우며 변경 가능성이 존재한다.
▶ DNS는 전화번호부 형식으로 도메인 주소를 IP주소로 변환한다.
클라이언트가 도메인 명으로 접근한다.
→ DNS 서버에서 IP 주소로 응답한다.
→ 응답받은 IP주소로 서버에 접속한다.