인프런 김영한 강사님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 수강하며 공부한 내용을 정리했습니다.
인터넷 네트워크
인터넷 통신
- 클라이언트 <-( 인터넷 )-> 서버
- 인터넷망은 수많은 노드들로 구성되어 있다.
- 그렇다면 어떤 규칙으로 어떻게 목적지까지 전달할 수 있을까?
IP
- 인터넷 프로토콜
- 어떤 역할을 할까?
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
- 클라이언트와 서버에 IP 주소를 부여한다.
- 클라이언트 : 100.100.100.1
- 서버 : 200.200.200.2
- IP 프로토콜의 한계
- 비연결성 : 패킷 수신 대상이 없거나 서비스 불능에도 패킷 전송
- 비신뢰성 : 중간에 패킷 손실, 패킷이 순서대로 오는가?
- 프로그램구분 : 같은 IP 사용하는 서버에서 애플리케이션이 여러개라면?
TCP, UDP
- 프로토콜 계층
1. 프로그램이 Hello, world! 메시지 생성
2. SOCKET 라이브러리를 통해 전달
3. TCP 정보 생성, 메시지 데이터 포함
4. IP 패킷 생성, TCP 데이터 포함
- [ IP 패킷 [ TCP 세그먼트 [ 전송데이터 ] ] ]
- IP 패킷 : 출발지 IP, 목적지 IP, 기타 등등
- TCP 세그먼트 : 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등등
- TCP 특징
- 연결지향 (3 way handshake)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 대부분 TCP 사용
- UDP 특징
- 연결지향 (3 way handshake) X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
=> IP에서 PORT와 체크섬 정도만 추가
=> 애플리케이션에서 추가 작업이 필요하다.
PORT
- 같은 IP 내에서 프로세스 구분하는 역할
- IP는 아파트, PORT는 동/호수라고 생각하면 된다.
DNS
- IP는 기억하기 어렵다. 그리고 IP는 변경될 수 있다.
- Domain Name System
- 전화번호부 역할
- 도메인 명을 IP 주소로 변환
출처