IP(Internet Protocol)
인터넷 프로토콜
역할
- 지정한 IP 주소에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- 출발지 IP와 목적지 IP를 통해 데이터를 송, 수신을 한다
한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라지거나, 순서대로 안오면 해결이 안된다
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상 구분을 못한다
IP 4계층
애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층
패킷이란
패키지(수화물) + 버킷(덩어리) 합성어
택배 박스에 데이터 넣듯이 비슷하다
TCP(Transmission Control Protocol) 특징
전송 제어 프로토콜
- 연결지향 - TCP 3 way handshake (가상 연결) 논리적으로만 연결이 됐는지 확인하는 것이다.
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- PORT를 이용해서 데이터 송, 수신
- TCP 3 way handshake
-
SYN : 접속요청
-
ACK : 요청수락
-
참고: 3. ACK와 함께 데이터 전송 가능
TCP 3 way handshake 과정
1. 클라이언트가 서버로 요청 시 SYN 전달
2. 서버는 클라이언트로 부터 SYN+ACK 전달하여 응답
3. 클라이언트는 다시 서버로 요청 시 ACK 전달
4. 데이터 전송
- 요즘은 ACK와 데이터를 같이 전송
- TCP 3 way handshacke는 실제로 연결 된 것이 아니고 논리적으로만 연결이 되었는지 확인 하는 것
- 중간에 수 많은 노드들은 연결됐는지는 모른다
UDP(User Datagram Protocol)
사용자 데이터그램 프로토콜
- IP와 비슷하게 기능이 거의 없음
- 연결지향 x
- 데이터 전달 보증 x
- 순서 보장 x
- 단순하고 빠름
정리
- IP와 거의 같다 + PORT + 체크섬 정도만 추가
- 애플리케이션에서 추가 작업 필요
PORT
TCP/IP 패킷 정보
- 출발지 PORT, 목적지 PORT가 있다.
- IP에다가 더해서 포트라는 개념도 있는 것
- IP는 목적시 서버를 찾는 것
- 서버 안에 돌아가는 것들을 구분하는게 포트
- 같은 IP내에서 프로세스 구분
비유를 하자면 IP가 아파트, 포트가 아파트 주소라고 생각을 해봐도 될 것 같다.
포트 번호는 0~65535 할당 가능
- 0~1023 은 잘 알려진 포트 사용하지 않는 것이 좋음
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS(Domain Name System)
- 전화번호부
- 도메인 명을 등록을 하고 해당 도메인 명을 IP주소로 변환
IP를 기억해야 접근할 수 있고 또는 변경될 수 있다는 점 때문에 IP를 기억해도 변경된 IP를 다시 기억을 해야된다.
이러한 점은 보완해주는게 DNS이다. DNS는 도메인 이름은 IP로 변경해주는 것인데 먼저 DNS서버에 도메인 명을 등록을 한다(유료이다.) 등록이 되어 있으면 예를 들어
- 클라이언트가 www.naver.com 이라는 도메인 명으로 DNS서버에 웹페이지를 접근 요청을 한다
- 요청이 온 도메인 명을 DNS서버에 등록되어 있는지 찾아서 해당 도메인 명의 IP를 찾아 해당 IP를 응답해주면 클라이언트는 해당 도메인 명으로 접근을 하게 된다.
DNS를 이용하면 IP를 기억해야 되는 부분과 변경되는 부분이 해결된다
※ 참고 문헌
김영한님 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 보고 정리한 글 입니다.