김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리하였습니다.
또한, 망나니개발자님의 블로그를 참조하였습니다.
인터넷 네트워크
클라이언트와 서버는 인터넷을 통해 데이터를 주고 받는다.
(사진 출처: 인프런 강의)
인터넷 프로토콜(IP)이란?
(사진 출처: 벨로그)
복잡한 인터넷 망에서 Client와 Server간에 통신을 하려면 최소한의 규칙이 필요한데, 이것이 바로 IP이다.
인터넷 프로토콜(IP) 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
IP 패킷의 구성
출발지 IP, 목적지 IP, 데이터 및 기타 정보를 포함한다.
(사진 출처: 네이버 블로그)
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 목적지까지 패킷의 정확한 전송을 보장하지 않음-> 패킷이 순서대로 안오면?
- -> 중간에 패킷이 사라지면?
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
OSI 7계층 및 TCP/IP 4계층 구조
(사진 출처: 티스토리)
TCP(Transmission Control Protocol)
TCP는 전송 계층의 대표적인 연결지항 프로토콜이다.
TCP 패킷은 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함한다.
TCP/IP 패킷 정보
(사진 출처: 인프런 강의)
TCP 특징
- 연결 지향 프로토콜
- 가상 회선 방식
- TCP 3 way handshake (연결 설정) 및 4 way handshake (연결 해제)
- 흐름 제어 및 혼잡 제어
- 데이터 전달 보증
- 전송 순서 보장
- 높은 신뢰성 보장
- UDP보다 느린 속도
TCP 3 way handshake
정확한 전송을 보장하기 위해, 사전에 통신하는 장치 간의 논리적 연결을 확인하고 세션을 수립하는 과정
(사진 출처: 인프런 강의)
UDP (User Datagram Protocol)
- 하얀 도화지에 비유할 수 있다. 기능이 거의 없다.
- 비연결형 서비스
- 데이터그램 방식
- 데이터 전달 보증 X
- 순서 보장 X
- 빠름
- IP와 유사 + PORT(프로그램 구분) + 체크섬(메시지에 대한 검증)
- 애플리케이션에서 추가 작업 필요
TCP vs UDP
TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정한다. 그렇기 때문에 높은 신뢰성을 보장하지만 속도가 비교적 느리다는 단점이 있다.
UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어지는 단점이 있다. 하지만 수신 여부를 확인하지 않기 때문에 속도가 빠르다. 애플리케이션 레벨에서 기능을 확장하는 등 최적화가 가능하다.
TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고 UDP는 실시간성이 중요한 스트리밍에 자주 사용된다.
PORT
같은 IP 내에서 프로세스(통신할 어플리케이션) 구분한다.
(사진 출처: 인프런 강의)
IP가 아파트라면 PORT는 몇 동, 몇 호인지 나타낸다.
- 0 ~ 65535: 할당 가능
- 0 ~ 1023: 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS (Domain Name System)
IP는 기억하기 어렵다.
IP는 변경될 수 있다.
DNS는 도메인 명을 IP 주소로 변환한다.
(사진 출처: 인프런 강의)
'Computer Science > 📡Network' 카테고리의 다른 글
[Network] 네트워크 기본 - 2 (0) | 2021.11.12 |
---|---|
[Network] 네트워크 기본 - 1 (0) | 2021.11.05 |
[Network] HTTP 메서드 (0) | 2021.10.11 |
[Network] HTTP 기본 (0) | 2021.10.04 |
[Network] URI와 웹 브라우저 요청 흐름 (0) | 2021.10.02 |