- 출발지 아이피 → 목적지 아이피 까지 서버 패킷을 노드에 던지면서 최종목표까지 전달
프로토콜
- 컴퓨터 또는 전자기기 간의 원활한 통신을 위해 지키기로 약속한 규약
- 프로토콜에는 신호 처리법, 오류처리, 암호, 인증, 주소 등을 포함한다.
IP
- 지정한 IP 주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- IP 패킷 정보 : 출발지 IP, 목적지 IP, 기타…
- 패킷(Packet) : Package + Bucket
IP 프로토콜의 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 : 중간에 패킷이 사라질 수도 있고 패킷이 순서대로 안올 수 도 있음
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 수 있음
기존 IP 프로토콜의 한계 → TCP 활용으로 극복
TCP/IP 패킷 정보
TCP (전송 제어 프로토콜 = Transmission Control Protocol)
- 연결 지향 – TCP 3 way handshake (가상 연결)
- 클라이언트 → 서버 = SYN
- 서버 → 클라이언트 = SYN + ACK
- 클라이언트 → 서버 = ACK
- – 이후 데이터 전송-
- 데이터 전달 보증
- 데이터 전송
- 데이터 잘 받았다는 응답 보냄
- 순서 보장
- 클라이언트가 서버에 패킷을 순서대로 전송
- 패킷이 순서가 다르게 도착할 경우
- 순서가 달라진 부분부터 패킷을 다시 보내라는 응답을 클라이언트에게 리턴
- 위 사진에 나온 것 처럼 전송 제어, 순서 정보가 TCP 내부에 있기에 가능한 것!
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
UDP (사용자 데이터그램 프로토콜 = User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결지향 – TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 순서가 보장되지 않지만, 단순하고 빠름
- 정리
- IP와 거의 같다. +PORT +체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요할 때 활용
- TCP에는 규칙이 많아서 속도가 UDP에 비해 느리다. → 최적화를 위해 손을 이미 댈 수 없다 ⇒ UDP 활용
PORT(= 항구)
- 서버 안에서 돌아가는 애플리케이션을 구분하는 용도
- 같은 IP 내에서 프로세스 구분
- 구분! : IP = 목적지 서버를 찾는 용도
- TCP/IP 패킷 안에는 출발지 IP와 PORT, 목적지 IP와 PORT, 전송데이터 등이 포함되어 있다.
- IP 가 아파트라면 포트는 호수이다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다.
- FTP – 20, 21
- TELENET – 23
- HTTP – 80
- HTTPS – 443
IP는 기억하기 어렵다.
IP는 변경될 수 있다. → DNS 로 한계 극복
DNS (도메인 네임 시스템 = Domain Name System)
- 전화번호부 같은 서버를 제공
- 도메인 명을 IP 주소로 변환
- 클라이언트가 도메인명 google.com을 요청
- DNS 서버는 200.200.200.2 라는 IP 를 리턴
- 향후 아이피가 변경되어도 도메인명으로 접근하기 때문에 용이하다.
정리
- 인터넷 통신
- IP(Internet Protocol)
- 복잡한 인터넷 망에서 메세지를 보내기 위해서 IP가 필요하다.
- IP에는 여러가지 한계점이 있다. (메세지 도착했는지 확인하기 어렵고 포트라는 개념이 없다)
- TCP
- 위의 문제를 해결해준다.
- UDP
- 거의 IP와 유사하다. 포트정도만 추가된 백지 상태이다. 필요하다면 기능 확장에 유리하다.
- PORT
- 같은 IP 안에서 통신하는 애플리케이션을 구분하기 위해서 사용
- IP = 아파트 / PORT = 호수
- DNS
- IP는 외우기 어렵고 변할 수 있다.
- 도메인 명을 등록해서 사용할 수 있게 해준다.