[SPRING] Internet Network
IP (Internet Protocol)
지정한 IP 주소에 데이터를 전달합니다. 패킷이라는 통신 단위로 데이터를 전달합니다.
- IP 패킷 정보
- 출발지IP, 목적지IP, etc…
- 전송 데이터
패킷 전달과정
- 클라이언트 패킷 전달 -> 인터넷 망의 라우터에서 라우팅과 포워딩을 통해 목적지 서버로 패킷을 전달
- *서버 패킷 전달 -> 같은 방식으로 확인 패킷을 전달
IP 프로토콜의 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송하는 이슈가 있습니다.
- 비신뢰성 : 패킷 Loss 이슈, 패킷 전송 순서 이슈가 있습니다.
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 구분 이슈가 있습니다.
이를 해결하기 위해 TCP, UDP 프로토콜이 등장
TCP (Transport Control Protocol)
- 인터넷 프로토콜 스택의 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
특징
- 연결지향 - TCP 3 way handshake (가상연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP를 사용
TCP 3 way handshake connect 연결 과정
- 클라이언트는 서버로 SYN 을 통해 접속을 request
- 서버는 SYN + ACK 을 통해 접속 request 를 수락 response 및 연결 request
- 클라이언트는 다시 서버로 ACK 를 통해 response
TCP 통신 (rdt 3.0)
- 데이터 전달 보증
- 클라이언트가 서버로 데이터를 전송하면 서버는 클라이언트에게 잘 받았다는 응답 메세지를 보냅니다.
- 순서보장
- 만약 클라이언트가 서버로 패킷 1->2->3 순서로 보냈고 서버가 패킷 1->3->2 순서로 받았다면 서버는 클라이언트에게 패킷2를 재요청 합니다.
위의 보장들은 TCP segment 에 출발PORT 목적PORT 전송제어, 순서, 검증 정보 등을 담고 있기에 가능합니다.
- 만약 클라이언트가 서버로 패킷 1->2->3 순서로 보냈고 서버가 패킷 1->3->2 순서로 받았다면 서버는 클라이언트에게 패킷2를 재요청 합니다.
UDP (User Datagram Protocol)
IP와 거의 동일합니다. PORT 정보와 checkSUM 정보정도를 추가적으로 포함합니다. 애플리케이션에서 추가적인 작업이 필요합니다.
PORT
클라이언트와 서버가 둘 이상의 프로세스를 연결하기 위해 사용됩니다. 즉, 패킷들을 구분하기 위해 사용됩니다. 같은 IP내에서 프로세스를 구분하기 위해 PORT 를 이용합니다. 클라이언트와 서버는 해당 프로세스의 PORT NUMBER 를 공유합니다. 이는 TCP/IP 패킷 정보에 출발 목적 IP 및 PORT 정보를 담고 있기에 가능합니다.
- 0 ~ 65535 할당 가능
- 0 ~ 1023 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP : 20,21
- TELNET : 23
- HTTP : 80
- HTTPS : 443
DNS (Domain Name System)
IP를 기억하기 어렵고 변경될 수 있으므로 DNS 를 이용합니다. 예를들어 DNS 서버에 도메인 명과 IP number 를 등록해놓습니다. 클라이언트가 DNS 서버에 도메인 명을 요청하면 서버로부터 해당 IP를 응답 받습니다. 이후 응답받은 IP를 이용해 원하는 서버에 접속합니다.