TCP/IP 기반 프로토콜을 사용하여 정보를 주고 받는 컴퓨터 네트워크이다.
패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 프로토콜이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.
패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.
전송(Transport) 계층에서 사용하는 프로토콜이다.
연결을 해제할 경우 4-way handshake 사용한다.
TCP에서 데이터를 분할하는 단위를 MSS(Maximum Segment Size)라고 하며, 데이터를 MSS 단위로 분할한다.
송신측 전송량 > 수신측 수신량일 경우, 전송된 패킷이 손실될 수 있기 때문에 송신측의 패킷 전송량을 제어한다.
Stop and Wait : 매번 전송한 패킷에 대한 확인 응답을 받아야 그 다음 패킷을 전송할 수 있다.
Sliding Window
네트워크가 혼잡할 경우, 제대로 데이터를 보낼 수 없다.
훼손된 패킷과 중복 수신된 패킷을 폐기하고, 손실되거나 제거된 패킷을 재전송한다.
HTTP/2.0까지 전송 계층은 TCP 기반이였으나, HTTP/3.0부터는 UDP기반으로 변경 되었다.
왜 UDP를 사용할까?
네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다.
포트 번호는 크게 3종류로 구분된다. IP 주소 뒤에 :Port번호를 붙여 표기한다.
ex) 127.0.0.1:8080
FTP : 20, 21
SSH : 22
텔넷 : 23
DNS : 53
HTTP : 80
HTTPS : 443
Alternate HTTP : 8008, 8080
사용자가 임의로 사용가능한 포트 번호
네트워크 상에서 컴퓨터들은 IP 주소를 이용하여 서로를 구분하고 통신한다. 하지만 숫자로 된 IP 주소를 외울 수 없기 때문에 기억하기 쉬운 도메인 주소 체계가 생성되었다.
인터넷 도메인 주소를 컴퓨터가 인식할 수 있는 IP 주소로 변환하는 역할을 한다.
요청이 수신되어 프로세스 처리 중. 잘 사용하지 않는다.
요청이 성공적으로 처리
요청이 정상적으로 처리 되었다. 응답에는 적합한 페이로드가 포함되어야 한다.
요청이 성공했으며 새로운 리소스가 생성됨
응답 헤더 Location 필드에 생성된 URI 표기
요청이 접수되었으나 처리가 완료되지 않았음
요청이 성공했으나, 응답 페이로드 본문에 보낼 데이터가 없다.
요청을 완료하려면 추가 행동이 필요하다.
웹 브라우저는 응답 결과에 Location
헤더가 있으면, Location 위치로 자동 이동한다.
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
요청한 리소스가 새로운 URL로 영구 이전되었다.
리다이렉트시 요청 메서드가 GET
으로 변하고, 본문이 제거될 수 있다.
301과 기능이 같으나, 리다이렉트시 요청 메서드와 본문이 유지된다.
리소스의 URI가 일시적으로 변경되었다.
캐시를 목적으로 사용한다.
PRG는 웹 개발에 사용되는 디자인 패턴이다.
예를 들어, 사용자가 form
에 정보를 작성 후 전송했다면, 아래 사진과 같이 새로고침을 누를 경우, 방금 전에 전송했던 POST 요청이 다시 서버에 전송된다.
이와 같은 문제를 방지하기 위해 리다이렉션을 사용해야 한다.
클라이언트 오류, 요청에 잘못된 구문이 포함되어 있거나 요청을 수행할 수 없음
클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
클라이언트가 해당 리소스에 대한 인증이 필요하다.
클라이언트가 권한이 없어 작업을 진행할 수 없다.
서버가 요청을 이해했지만 승인을 거부함
요청한 URL에 해당하는 리소스를 찾을 수 없다.
서버 오류, 서버가 정상 요청을 처리하지 못함
서버 문제로 오류 발생
서버가 요청을 처리할 수 없다.
서버가 일시적인 과부하 또는 예정된 작업으로 요청을 처리할 수 없다.
header-field = field-name ":" OWS field-value OWS
동일한 URI에서 리소스의 서로 다른 버전을 지원하기 위해 사용되는 매커니즘이다.
Accept : 클라이언트가 선호하는 미디어 타입 전달
Accept-Encoding : 클라이언트가 선호하는 압축 인코딩
Acceopt-Language : 클라이언트가 선호하는 자연 언어
ex) Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5
구체적인 것을 기준으로 미디어 타입을 맞춘다.
Media Type | Quality Value |
---|---|
text/html;level=1 | 1 |
text/html | 0.7 |
text/plain | 0.3 |
image/jpeg | 0.5 |
text/html;level=2 | 0.4 |
text/html;level=3 | 0.7 |
김영한 - 모든 개발자를 위한 HTTP 웹 기본 지식
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
IP 작동 원리
https://dvnest.com/user_20210624