#1 인터넷 네트워크
1.1 인터넷 통신
클라이언트 → 서버
"Hello World!" 전송
클라이언트 ← 서버
"Ok" 전송
- 인터넷이 있으면 복잡!
1.2 IP(Internet Protocol)
1. IP 주소 부여
- IP 인터넷 프로토콜 역할
: 지정한 IP 주소(IP Address)에 데이터 전달
: 패킷(Packet)이라는 통신 단위로 데이터 전달
2. 클라이언트 패킷 전달
3. 서버 패킷 전달
< IP 프로토콜의 한계 >
- 비연결성
: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
: 중간에 패킷이 사라지면? (패킷 소실)
: 패킷이 순서대로 안오면? (패킷 전달 순서 문제 발생)
- 프로그램 구분
: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
1.3 TCP, UDP
< 인터넷 프로토콜 스택의 4계층 >
애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층
1. 프로그램이 Hello, world! 메시지 생성
2. SOCKET 라이브러리를 통해 전달
3. TCP 정보 생성, 메시지 데이터 포함
4. IP 패킷 생성, TCP 데이터 포함
*TCP 세그먼트가 추가
→ IP의 문제점 해결
< TCP 특징 >
: 전송 제어 프로토콜(Transmission Control Protocol)
- 연결지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증: ACK
- 순서 보장: 순서가 잘못오면 다시보내라는 메시지를 전송
- 신뢰할 수 있는 프로토콜
- 데이터량이 많고 시간이 오래 걸림
- 현재는 대부분 TCP 사용
< TCP 3 way handshake >
SYN: 접속 요청
ACK: 요청 수락
*참고: 3. ACK와 함께 데이터 전송 가능
< UDP 특징 >
: 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 X - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
*정리
- IP와 거의 같다. (+ PORT + 체크섬(검증) 정도만 추가)
- 애플리케이션에서 추가 작업 필요
1.4 PORT
한번에 둘 이상 연결해야 하면?
- IP만으로는 구분 x → port로 구분!
예) IP - 아파트 port - 동호수
< PORT >
: 같은 IP 내에서 프로세스 구분
- 0 ~ 65535 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
1.5 DNS
IP는 기억하기 어렵고 변경될 수 있다.
→ DNS 도메인 네임 시스템(Domain Name System)
- 전화번호부
- 도메인 명을 IP 주소로 변환
예)
1. 도메인 명 google.com
클라이언트 → DNS서버
2. 응답: 200.200.200.2
클라이언트 ← DNS서버
3. 접속 200.200.200.2
클라이언트 → 서버
자료는 김영한님의 인프런 모든 개발자를 위한 HTTP 웹 기본 지식 강의에서 가져온 것입니다.
'Web > HTTP' 카테고리의 다른 글
모든 개발자를 위한 HTTP 웹 기본 지식 #6 (0) | 2023.07.05 |
---|---|
모든 개발자를 위한 HTTP 웹 기본 지식 #5 (0) | 2023.07.05 |
모든 개발자를 위한 HTTP 웹 기본 지식 #4 (1) | 2023.07.01 |
모든 개발자를 위한 HTTP 웹 기본 지식 #3 (0) | 2023.07.01 |
모든 개발자를 위한 HTTP 웹 기본 지식 #2 (0) | 2023.06.28 |