IP (인터넷 프로토콜)
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
IP 프로토콜의 한계
-
비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
-
비신뢰성
- 중간에 패킷이 사라져도 모른다.
- 패킷이 순서대로 안오면
-
프로그램 구분
- 같은 IP 를 사용하는 서버에서 애플리케이션이 둘 이상이면?
이를 해결하기 위해 TCP , UDP 등장
인터넷 프로토콜 스택의 4계층
1) 애플리케이션 계층 - HTTP , FTP
2) 전송 계층 - TCP , UDP
3) 인터넷 계층 - IP
4) 네트워크 인터페이스 계층 ( 랜카드, 랜드라이버 등등 )
IP 패킷 정보 : 출발지, 목적지, 데이터
패키지 + 버킷 = 패킷
TCP/IP 패킷 정보 : 출발지 port , 목적지 port , 전송 제어, 순서, 검증 정보
TCP 특징
- 전송 제어 프로토콜 , Transmission Control Protocol
- 연결지향 - TCP 3 way handshake(가상연결)
- 데이터 전달 보증 ( 전달이 누락된 것을 알수 있음 )
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
3 Way Handshake (개념적인 연결)
- 클라이언트에서 서버로 SYN (싱크로나이즈) 라는 메세지를 보냄.
- 서버에서 클라이언트로 ACK 와 SYN 을 같이 보냄.
- 클라이언트에서 ACK(알았어) 를 보낸다.
클라이언트와 서버사이에 있는 수많은 노드들은 서로 연결이 되어있는지를 모른다.
데이터 전달 보증, 순서 보장
클라이언트가 서버로 데이터를 전송하고, 서버에서 데이터를 잘 받았다고 메세지를 보내준다.
클라이언트가 패킷 1, 패킷2, 패킷3 순서로 서버에게 전송하면, 서버는 패킷1, 패킷3, 패킷2 순서로 도착한 경우에 패킷2부터 다시보내라는 응답을 클라이언트로 준다.
UDP 특징
- 사용자 데이터그램 프로토콜 (User Datagram Protocol)
- 하얀 도화지, 기능이 거의 없음
- IP 와 거의 같다. + 포트 , + 체크섬
: 여러 어플리케이션(음악, 게임 등) 을 구분하기 위해 포트가 존재함
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
- 애플리케이션에서 기능을 확장해볼 수 있다.
포트
클라이언트는 하나인데 한번에 둘 이상 연결하려고 하면?
- 게임, 화상통화, 웹 브라우저 요청 ...
- 내 IP 로 패킷이 날라올 텐데, 이게 게임에 필요한지, 화상통화에 필요한지 .. 어떻게 구분을 할 수 있는가 ?
- 같은 IP 내에서 동작하는 애플리케이션,프로세스를 구분할 수 있게 해준다.
- 아파트를 IP로 본다면, 몇동 몇호 정보가 포트임
0 ~ 65535 : 할당 가능
0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
FTP : 20,21
TELNET - 23
HTTP - 80
HTTPS - 443
DNS - 도메인 네임 시스템 (Domain Name System)
- IP 는 기억하기 어렵다.
- IP 는 변경될 수 있다.
도메인 명 : google.com
IP : 200.200.200.2
- DNS 서버만 있으면, 기억이 어렵거나 변경될 수 있는 문제를 해결할 수 있다.