※ 본문은 김영한 선생님의 인프런 '모든 개발자를 위한 HTTP 웹 기본 지식' 강의를 듣고 정리한 내용임을 알립니다.
Q. 수많은 복잡한 노드들을 넘어서 어떻게 통신이 넘어가는 것인가?
▶ IP (Internet Protocol)
: IP 주소를 부여하고, 지정한 IP 주소에 패킷(Packet)이라는 통신 단위의 데이터를 전달하는 방식
→ 한계
① 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
② 비신뢰성 : 중간에 패킷이 사라진다면? 패킷이 순서대로 안온다면?
③ 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
▶ TCP (Transmission Control Protocol, 전송 제어 프로토콜)
- 연결 지향 - TCP 3 way handshake (가상 연결)
- 데이터 전달 보증
- 순서 보장
→ 신뢰할 수 있는 프로토콜이며, 현재는 대부분 TCP 사용
▶ UDP (User Datagram Protocol, 사용자 데이터그램 프로토콜)
- 기능이 거의 없음
- 데이터 전달 보증 X
- 순서 보장 X
- 단순하고 빠름
→ IP와 거의 같은 특징 + PORT + 체크섬 정도만 추가 / 애플리케이션에서 추가 작업 필요
▶ PORT
Q. 한번에 둘 이상 연결해야 한다면?
→ 0 ~ 65535 할당 가능
└> 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
└> FTP - 20, 21
└> TELNET - 23
└> HTTP - 80
└> HTTPS - 443
▶ DNS (Domain Name System)
: IP는 기억하기 어려우며 변경될 수 있다.
→ DNS는 전화번호부와 같은 서버를 제공 / 도메인 명을 IP 주소로 변환
▶ URI (Uniform Resource Identifier) 정의
: Uniform - 리소스를 식별하는 통일된 방식
: Resource - 자원, URI로 식별할 수 있는 모든 것 (제한 없음)
: Identifier - 다른 항목과 구분하는데 필요한 정보
"URI는 로케이터(URL), 이름(URN) 또는 둘 다 추가로 분류될 수 있다"
※ 참고 : URN의 방법은 보편화되지 않아서 널리 쓰이지 않음
▶ URI 전체 문법
- sheme://[userinfo@]hostp[:port][/path][?query][#fragment]
- https://www.google.com:443/search?q=hello&hl=ko
- 프로토콜 (https)
- 호스트명 (www.google.com)
- 포트 번호 (443)
- 패스 (/search)
- 쿼리 파라미터 (q=hello&hl=ko)
→ scheme
: 주로 프로토콜 사용
: 프로토콜은 어떤 방식으로 자원에 접근할 것인가에 대한 규칙 (http, https, ftp 등)
: http는 80포트, https는 443 포트를 주로 사용, 포트는 생략 가능
※ 참고 : https는 http에 보안 추가 (HTTP Secure), 대부분의 웹사이트들이 https 사용
→ userinfo
: URL에 사용자 정보를 포함해서 인증
: 거의 사용하지 않음
→ host
: 도메인명 또는 IP 주소를 직접 사용 가능
→ path
: 리소스 경로, 보통 계층적 구조로 되어 있음
ex) /members/100, /items/iphone12
→ query
: key=value 형태
: ?로 시작하며 &로 추가 가능
: query parameter, query string 등으로 불림, 웹 서버에 제공하는 파라미터, 문자 형태
→ fragment
: html 내부 북마크 등에 사용
: #을 붙여서 사용
: 서버에 전송하는 정보가 아님
▶ 웹 브라우저 요청 흐름
'Web > 기초 공부' 카테고리의 다른 글
MVC 패턴 (0) | 2021.04.02 |
---|---|
웹 애플리케이션 이해 (0) | 2021.03.29 |
HTTP 정리 (0) | 2021.03.28 |