웹 기본 지식 - 인터넷 네트워크
웹 기본 지식 - 인터넷 네트워크
IP(Internet protocol)
인터넷 프로토콜의 역할
- 지정한 IP 주소(Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터를 전달
인터넷 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 대상이 패킷을 받을 수 있는 상태인지 모른다.
- 비신뢰성
- 중간에 패킷이 사라지는 경우
- 여러 노드를 거쳐 패킷이 전달되는 와중 특정 노드에서 문제가 발생할 수 있다.
- 패킷의 순서가 바뀌는 경우
- 중간에 패킷이 사라지는 경우
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상인 경우
TCP, UDP
인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 웹 브라우저, 네트워크 게임, 채팅 프로그램 (소켓 라이브러리)
- 전송 계층 - TCP, UDP
- OS
- 인터넷 계층 - IP
- OS
- 네트워크 인터페이스
- LAN 장비
TCP 패킷 정보
- 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 등
TCP의 특징
- 전송 제어 프로토콜 (Transmission Control Protocol)
- 연결 지향
- TCP 3 way handshake(가상 연결)
- 데이터 전달 보증
- 데이터를 전송하면 받은 측에서 데이터를 받았음을 전송한다.
- 순서 보장
- 패킷이 전송 중 순서가 달라진 경우 해당 부분부터 다시 보내도록 요청한다.
- 신뢰할 수 있는 프로토콜
- 위와 같은 특징들로 신뢰할 수 있다고 보통 표현한다.
- 현재는 대부분 TCP 사용
연결지향 - TCP 3 way handshake
- SYN - 접속 요청
- ACK - 요청 수락
[ 데이터 전송 전 아래와 같은 세번의 연결 과정이 일어난다. ]
- 클라이언트에서 서버로 SYN 메시지를 보냄
- 서버에서 클라이언트로 ACK + SYN 메시지를 보냄
- 클라이언트에서 서버로 ACK 메시지를 보냄
UDP의 특징
- 사용자 데이터그램 프로토콜 (User Datagram Protocol)
- 기능이 거의 없음.
- 순서를 보증하지 않는다.
- 데이터 전달을 보증하지 않지만, 단순하고 빠르다.
- IP와 거의 같다 + PORT + 체크섬
- 애플리케이션에서 추가 작업이 필요하다.
PORT
한번에 둘 이상 연결해야 하는경우
- 클라이언트가 애플리케이션 별 각기 다른 서버에 요청을 하는 경우
- 게임, 디스코드, 웹 브라우저 등을 동시에 동작
- IP만 이용하는 경우 애플리케이션 별 각기 다른 패킷을 구분하는 문제가있음.
같은 IP 내에서 프로세스를 구분한다.
- IP는 목적지 서버를 찾는일을, 애플리케이션을 구분하는것은 PORT가 한다.
- 애플리케이션 별 각기 다른 포트를 가짐으로 패킷을 구분해서 받거나 보낼 수 있다.
- IP는 아파트라 하면 PORT는 호수로 비유가 가능
대표적인 PORT
0 ~ 65535 할당이 가능하며, 0 ~ 1023은 잘 알려진 포트로써 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
도메인 네임 시스템 (Domain Name System)
- IP는 기억하기 어려우면서 변경될 수 있다.
- 전화번호부에 비유한다. (실제 번호를 기억하지 않고 이름을 기억해도 되는것처럼)
- 도메인 명을 IP 주소로 변환
- ex) 도메인 - raindragnn.com, IP - 200.200.200.2