IP(인터넷 프로토콜)
- 지정한 IP 주소(IP Address)에 데이터 전달, 목적지 서버를 찾는것
- IP 패킷 정보 : 출발지 IP, 도착지 IP, 기타 등등을 담고있어야된다.
- 출발지 IP와 도착지 IP의 중간에서 노드를 거쳐 전달된다.
- 패킷(Packet)이라는 통신 단위로 데이터 전달
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 받을 대상이 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라질경우
- 패킷이 순서대로 오지 않는경우
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 ?
TCP (IP 프로토콜의 한계를 해결)
- 인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
- 프로토콜 계층
- 프로그램에서 메시지 생성 ->
- Socket 라이브러리를 통해 전달 ->
- TCP정보생성(메시지 데이터포함)("한번더 포장하는 느낌") ->
- IP 패킷 생성, (TCP 데이터 포함)
TCP/IP 패킷 정보
- TCP/IP 패킷정보 = IP 패킷정보 (출발지 IP, 도착지 IP, 기타 등등을 담고) + TCP세그먼트 출발지 Port, 목적지 Port, 전송 제어, 순서, 검증 정보
- TCP(전송 제어 프로토콜) 특징
- 연결지향 - TCP 3 way handshake (가상연결)
- 클라이언트 SYN(접속요청) ->
- 서버 SYN+ACK(요청 수락및접속요청) ->
- 클라이언트 ACK(수락) ->
- 데이터 전송가능
- 데이터 전달 보증
- 클라이언트에서 서버로 데이터 전송한다 ->
- 서버에서 데이터 잘 받았다고 응답한다
- 순서 보장
- 클라이언트가 패킷1 패킷2 순서로 서버에 전송한다 ->
- 서버에 패킷2 패킷1 순서로 도착 하게된다 ->
- 서버에서 클라이언트에게 패킷1 부터 다시 보내라고 응답한다.
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
UDP (사용자 데이터그램 프로토콜)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- "데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
정리
- IP와 거의 같다 + "Port" + "체크섬" 정도만 추가
- 애플리케이션에서 추가작업 필요
Port
- 한번에 둘 이상 연결해야 하면 ?
- 서버안에서 동작하는 애플리케이션을 구분하는것은 Port이다.
- HTTP : 80 Port , HTTPS : 443 Port
DNS (도메인 네임 시스템)
- IP는 변경될수 있다.
- 도메인 명을 IP 주소로 변환
- ex : google.com, naver.com <- 도메인 명
번외
IP는 아파트로 생각, Port는 같은 IP(아파트)에서 ~호로 생각