클라이언트와 서버가 멀리 있을경우, 인터넷 망을 통해 메시지를 보낸다.
하지만, 노드를 통한 여러 과정들이 있다. 그럼 어떻게 안전하게 도착할까?
바로, IP(인터넷 프로토콜) 이다.
IP 패킷 정보(규칙)은 출발지IP, 목적지IP, 기타(메시지등)을 넣고 전송한다.
노드들끼리 전송하면서 맞는 IP주소에 도달한다.
또한, 메시지를 받은 서버도
출발IP, 목적IP, 기타(메시지등)을 넣고 다시 전송하여 클라이언트에게 도달한다.
1) 비연결성
2) 비신뢰성
3) 패킷 소실
4) 패킷 전달 순서 문제 발생
EX) 용량이 클 때
TCP는 인터넷 프로토콜 스택의 4계층 중, 전송 계층에 해당한다.
IP박스 안에 TCP 세그먼트가 있다.
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증정보 등등..
IP로만 해결안됬던걸 해결 할 수 있다.
TCP는 현재 시장의 90% 가까운 점유율을 가지고 있다.
SYN : 접속 요청 / ACK : 요청 수락
1) 연결지향 - TCP 3 way handshake(가상 연결)
TCP 3 way handshake
1) 클라이언트 -> 서버 : 메시지 전송
2) 서버 -> 클라이언트 : 클라이언트 메시지 확인 메시지 전송
3) 클라이언트 -> 서버 : 서버가 보낸걸 확인 메시지 보냄
따라서, 클라이언트와 서버 모두 확인하며 신뢰 할 수 있다.
4) 데이터 전송
하지만, 가상연결로써,
논리적으로만 연결된거지 물리적으로 연결된건 모른다.
2) 데이터 전달 보증
3) 순서 보장
따라서, 신뢰할 수 있는 프로토콜로 현재는 대부분 TCP를 사용한다.
1) 하얀 도화지에 비유(기능이 거의 없음)
2) 연결지향 - TCP 3 way handshake X
3) 데이터 전달 보증 X
4) 순서 보증 X
5) 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름.
즉, IP 프로토콜과 거의 비슷하다. +PORT +체크섬 정도
패킷을 전달할때
출발지 IP, PORT
목적지 IP, PORT
모두 보내기 때문에 확인 가능하다.
EX) IP는 아파트, PORT는 몇동, 몇호로 생각하면 쉽다.
한 아파트 안에서 사람들이 어디서 사는지 알려준다.
PORT 번호
0 ~ 65535 : 할당 가능
0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다
FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443
마지막으로, DNS 이다.
IP는 기억하기 어려울뿐만 아니라, 변경 될 수 있다.
정리
엄청 복잡한 인터넷 망을 메시지를 보내기 위해서 제일 먼저,
인터넷 프로토콜이라는 IP가 있어야 한다. 보통 IP 프로토콜이라고 한다.
하지만, IP프로토콜만 가지고는 메시지가 잘 전송됬는지 확인하기 어렵고,
포트라는 개념도 없고, 메시지 순서도 없다.
이 문제를 TCP 프로토콜이 해결해준다.
UDP 프로토콜은 IP 프로토콜과 비슷하지만, 포트가 추가된다.
필요하면, UDP프로토콜에 애플리케이션 기능을 확장 할 수 있다.
PORT는 같은 IP 안에서 동작하는 통신할 애플리케이션을 구분하기 위해서 사용한다. 쉽게 IP는 아파트, PORT는 몇동/몇호 로 생각하면 쉽다.
DNS는 IP는 변하기 쉽고 외우기 어려운데,
도메인명을 등록해서 사용 할 수 있도록 하는것이다.