반응형
인터넷 프로토콜(Internet Protocol, IP)
노드: 네트워크의 기본요소인 지역 네트워크에 연결된 컴퓨터와 그 안에 속한 장비들을 통틀어 하나의 노드라고 불리며 재분배 지점 또는 통신 종단점이다. 네트워크를 중간에서 연결해주는 서버
- 인터넷 프로토콜(IP) 역할
- 지정한 IP 주소(IP Address)에 데이터 전달한다.
- 패킷(Packet)이라는 통신 단위로 데이터 전달한다.
- 패킷(Packet) : 패키지(수화물) + 버킷(덩어리)의 합성어
- 예) IP 패킷 구조
- 인터넷 프로토콜(IP)의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
- 비신뢰성
- 패킷 전송 도중 서버가 중간에 꺼져서 패킷이 사라지면 알 수 없다.
- 데이터가 크면 끊어서 패킷을 보낸다.(1패킷 약 1500바이트) 끊어서 보낸 패킷들은 서로 다른 노드로 이동할 수 있다. 이로 인해 서버에서 패킷 받는 순서가 기존에 보낸 패킷의 순서와 달라질 수 있고 의도치 않은 결과가 발생할 수 있다.
- 프로그램 구분 불가
- 단순히 목적지 주소(IP)만 알고 있고 세부적으로 어디인지는 구체적으로 알지 못한다. 따라서 해당 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 패킷을 어디로 전달할 지 구분할 수 없다.
- 비연결성
전송 제어 프로토콜(Transmission Control Protocol ,TCP)
- Ethernet frame은 실제 물리적인 정보가 포함되어있다.
- 예) TCP/IP 패킷 구조
- TCP 특징
- 연결지향적 프로토콜 - TCP 3 way handshake(가상 연결) 클라이언트와 서버가 연결이 되면 메시지를 전송한다. 위의 그림은 논리적으로만 연결된 상태이며 패킷 전송 시 지나는 각 노드들이 실제로 연결되었는지는 알 수 없다.
- 데이터 전달 보증
- 패킷이 중간에 손실이 된 경우에도 알 수 있다.
- 서버에 도착하는 패킷 순서를 보장한다.
- 신뢰할 수 있는 프로토콜이라 불린다.
- 프로토콜 자체에서 정의된 필수로 거쳐야하는 과정(신뢰성을 확보하기 위해 필요로 하는 동작)이 존재하고 이미 필요에 의해 추가된 많은 옵션들이 자리를 차지하고 있기 때문에 수정하기 어렵다.
- 최적화 및 커스터마이징 하기 어렵다.
사용자 데이터그램 프로토콜(User Datagram Protocol, UDP)
- UDP 특징
- 인터넷 프로토콜(IP)에 PRO와 체크섬(데이터검증용) 정도만 추가되었다.
- 비 연결지향적 프로토콜
- 데이터 전달을 보증 하지 않는다.
- 서버에 도착하는 패킷 순서를 보장 하지 않는다.
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다
- IP에 기능이 거의 추가되지 않은 하얀 도화지 같은 상태이기 때문에 최적화 및 커스터마이징이 용이하다.
- 필요로 하는 기능만 추가할 수 있다.
- 애플리케이션에서 추가 작업 필요하다.
포트(PORT)
- 사전적의미: 배가 도착하는 항구
- 인터넷 프로토콜(IP)만 가지고는 목적지에 여러 애플리케이션이 동작하고 있다면, 패킷을 어디로 전달 해야하는지 알 수 없다. 한 번에 둘 이상 연결해야 할 때 목적지에서 어느 애플리케이션의 패킷인지를 구분하기 위해 포트(PORT) 개념을 사용한다.
- 포트 번호
- 0 ~ 65535 : 할당 가능
- 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다.
- FTP - 20, 21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
도메인 네임 시스템(Domain Name System, DNS)
- 전화번호부에 비유하기도 한다.
- 도메인 명을 IP 주소로 변환하는 역할을 한다.
- IP는 기억하기 어렵고, 변경될 수 있다. DNS를 사용하면 기억하기 어렵고 변경되는 IP를 도메인 명으로 접근 할 수 있다.
- 만약, IP가 변경된다면 변경된 IP로 접근하기 위해 해당 도메인의 IP를 갱신해주어야 한다.
[참고자료]
반응형
'HTTP > 기본' 카테고리의 다른 글
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 활용 - HTTP API 설계 (0) | 2021.07.15 |
---|---|
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송 (0) | 2021.07.13 |
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 (0) | 2021.07.12 |
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 (0) | 2021.07.10 |
[모든 개발자를 위한 HTTP 웹 기본 지식]URI(Uniform Resource Identifier) (0) | 2021.07.09 |