인터넷 네트워크
IP (인터넷 프로토콜)
- 역할
- 지정한 IP주소에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
- 패킷 = 패키지 + 버킷(package + bucket)
- 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 : 중간에 패킷이 사라질때, 패킷이 순서대로 오지 않을 수 있음
- 프로구럄 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 한계가 있다.
TCP, UDP
인터넷 프로토콜 스택의 4계층 |
---|
애플리케이션 계층 - HTTP, FTP |
전송계층 - TCP, UDP |
인터넷 계층 - IP |
네트워크 인터페이스 계층 |
- IP 패킷 정보 : 출발지 IP, 목적지 IP, 기타 등등
- TCP 패킷 정보 : 출발지 PORT 목적지 PORT, 전송제어, 순서, 검증정보 등등
- TCP 특징 (전송 제어 프로토콜)
- 연결지향 - TCP 3 way handshake (가상연결) : 클라이언트가 서버로 sync를 보냄 => 서버에서 ack, sync를 응답함 => 클라이언트가 ack를 응답함 => 연결되었다고 생각
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
- UDP 특징
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- IP와 거의 같지만 PORT, 체크섬 정도만 추가되었다
- 애플리케이션에서 추가 작업 필요
PORT
- 한번에 둘 이상 연결해야 한다면?
- 같은 IP내에서 프로세스를 구분 하는게 PORT이다
- IP = 아파트, PORT = 아파트 호수
PROT | NUM |
---|
할당 | 0 ~ 65535 |
되도록 사용 X | 0 ~ 1023 |
FTP | 20, 21 |
TELNET | 23 |
HTTP | 80 |
HTTPS (보안추가) | 443 |
DNS
IP의 문제 : IP주소를 기억하기 어렵다, IP는 변경될 수 있다
- DNS란 : 도메인 네임 시스템 (Domain Name System)
- 전화번호부
- 도메인 명을 IP주소로 변환 시켜준다
URI
- URI, URL, URN : URI는 URL로케이터(Locator) 또는 URN이름(Name) 혹은 둘다로 추가 분류될 수있다
- URL (Uniform Resource Locator) : 리소스의 위치
- URN (Uniform Resource Name) : 리소스의 이름 그 자체 (사용 X => 이름만으로 실제 리소스를 찾을 수 있는 방법이 없다)
- URI (Uniform Resource Identifier) :
- U = 리소스 식별하는 통일된 방식,
- R = 자원 또는 URI로 식별할 수 있는 모든것(제한없음),
- I = 다른 항목과 구분하는데 필요한 정보
URL 분석
ex) scheme://[userinfo@]host[:port][/path][?query][#fragment]
ex) https://www.google.com:443/search?q=hello&hl=ko
-- 프로토콜 = (https), 호스트명 = (www.google.com), 포트번호 = (443),
-- 패스 = (/search), 쿼리 파라미터 = (q=hello&hl=ko)
- scheme :
- 주로 프로토콜 사용
- 프로토콜 : 어떤방식으로 자원에 접근할 것인가 하는 약속 및 규칙
- http는 80 포트, https는 443 포트를 주로 사용한다 포트는 생략 하다
- https는 http에 보안을 추가 한 것이다 (HTTP Secure)
- userinfo :
- URL에 사용자정보를 포함해서 인증
- 거의 사용하지 않음
- host :
- 호스트명
- 도메인명 또는 IP주소를 직접 사용
- Port
- 접속포트
- 일반적으로 생략, 생략시 http는 80 포트, https는 443포트 사용
- 특정서버에 따로 접근해야 할 시 입력 함
- path
- 리소스 경로, 계층적 구조
-ex) /home/file1.jpg || /items/iphone11 pro max
- query
- key = value 형태
- ?로 시작, &로 추가 기능 ex) ?keyA=valueA&keyB=valueB
- query parameter 또는 query string 등으로 불림
참조
인프런 김영한님 강의
HTTP & Network Basic