인터넷 네트워크
- IP
- TCP, UDP
- PORT
- DNS
IP
IP 프로토콜의 역할
- 지정한 IP에 데이터(메시지)를 담아서 전달
- 패킷이라는 통신 단위로 데이터를 (메시지)를 전달
IP 패킷 정보 (출발지 IP, 목적지 IP, 기타 등등)
그러나 이 IP 프로토콜에는 한계가 있다
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나, 대상이 그 패킷을 받을 수 없는 상태여도 패킷을 전송한다( 목적지 IP 상태를 알지 못한다)
- 비신뢰성
- 패킷 소실 (소실되어도 모름)
- 패킷 전달 순서 문제 발생 (서버에 클라이언트가 보낸 순서와 다르게 도착함)
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 여러 애플리케이션을 사용하고 있을때 (ex. 게임과 음악듣기 등) 이 애플리케이션들을 구분 짓지 못한다.
그래서 이를 해결하기 위해 TCP 등장
TCP, UDP
인터넷 프로토콜 4계층
TCP/IP 패킷 정보
- IP 패킷 정보 : 출발지 IP, 목적지 IP, 기타 … + 전송 데이터(http 전송 메시지)
- TCP/IP 패킷 정보: IP패킷 + 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보
TCP 특징
- 연결 지향 - 3 way handshake
- 데이터 전달 보증
- 순서 보장
신뢰할 수 있는 프로토콜이다. 현재 대부분 TCP 사용
3 way handshake
SYN: 접속 요청
ACK: 요청 수락
요새는 최적화가 잘되서 ACK와 함께 데이터를 함께 전송한다.
TCP 3 way handshake는 가상연결이다. 물리적으로 연결되어 있는것이 아니라 논리적으로 연결됐다고 치는 거다.
데이터 전달 보증
데이터를 전송하고 , 서버 입장에서 데이터를 잘 받았다고 응답 메세지를 보냄
순서 보장
기본적으로 패킷이 2번이 도착해야하는데, 패킷 3번이 먼저 도착했으면 2번 부터 다시 보내라고 요청하고 클라이언트는 다시 2번부터 다시 전송하게 된다.
UDP (특징)
- 기능이 거의 없다.
- 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- IP + PORT + 체크섬
TCP는 데이터 양도 크고, 전송속도도 빠르게 만드는 것에 한계가 있다. 그러나 UDP는 데이터 전달 및 순서가 보장되진 않지만, 단순하고 빠르다. 좀더 최적화하고 싶을때 TCP는 그대로 두고 UDP를 활용한다. 애플리케이션에서 추가로 작업이 필요하다.
PORT
한번에 여러개의 서버에서 애플리케이션을 사용하고 있으면, 하나의 IP에서 게임, 화상통화, 웹브라우저 요청 등을 사용하고 있을때, 서버에서 게임 패킷, 화상통화에 필요한 패킷, 등등 이것을 구분짓고 싶을때 PORT를 사용한다
서버 안에서 돌아가는 애플리케이션을 구분 하는 것이 PORT다.
- 0~ 65536 할당 가능
- 0 ~ 1023: 잘 알려진 포트라서, 사용하지 말자
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS
IP는 기억하기 어렵고, 변경될 수 있다는 어려움이 있다!!!?
그래서
DNS이 있다
- 전화번호부 서버와 같다
- 도메인명을 IP주소로 변환
도메인으로 접근하고, 서버에 도메인명에 해당하는 IP를 요청하고 , 그 IP를 받아서 접근한다.
댓글