HTTP란 무엇입니까?
공통 네트워크는 TCP/IP
프로토콜 제품군을 기반으로 작동하며 HTTP는 하위 집합입니다. http는 tcp 프로토콜을 기반으로 하여 헤더인 tcp를 기반으로 일부 사양이 추가되는데, http를 학습한다는 것은 각각의 헤더가 무엇을 하는지 배우는 것입니다.
TCP/IP 프로토콜 제품군
간단히 말해서 프로토콜은 통신 규칙입니다. 예를 들어 통신 중에 요청을 시작하는 사람, 요청을 종료하는 방법, 통신하는 방법 등이 있습니다. 집합적으로 인터넷 관련 프로토콜이라고 합니다 TCP/IP
.
프로토콜 레이어링
OSI(Open System Interconnection Open System Interconnection Reference Model)는 네트워크 상호 연결을 위한 7계층 모델을 정의합니다.
- 물리적 계층: 통신 장치와 네트워크 미디어 간의 상호 연결을 관리합니다.
- 데이터 링크 계층: 미디어 액세스 및 링크 관리를 제공합니다.
- 네트워크 계층: IP 주소 선택 및 라우팅.
- 전송 계층: 데이터 통신.
- 세션 계층: 세션을 생성, 관리 및 유지합니다.
- 프리젠테이션 계층: 데이터 인코딩, 형식 변환 및 데이터 암호화.
- 애플리케이션 계층: 애플리케이션 또는 사용자 요청에 대한 다양한 요청 서비스를 제공합니다.
아래 그림과 같이:
구현 시 일반적으로 4개의 계층으로 계층화됩니다.
- 링크 계층(사물, 숫자): 네트워크 연결의 하드웨어 부분
- 네트워크 계층: IP는 전송 경로를 선택합니다(ip 주소 및 mac 주소를 통해)(mac 주소와 통신하기 위해 ARP 프로토콜 사용).
- 전송 계층: TCP 프로토콜(신뢰), UDP 프로토콜, 데이터 전송(HTTP -> TCP, DNS -> UDP)
- 응용 계층(미팅, 테이블, 응답): HTTP, FTP, DNS(다른 컴퓨터와 통신하는 응용 서비스, 사용자에게 응용 서비스를 제공할 때 통신 활동)
액세스 페이지 프로세스 TCP/IP
통신 프로토콜:
- DNS 프로토콜을 통해 도메인 이름을 확인하여 해당 IP 주소를 얻습니다.
- HTTP 프로토콜을 통해 데이터를 전송하고 대상 웹 서버에 대한 HTTP 요청 메시지 생성
- 통신을 용이하게 하기 위해 HTTP 요청 메시지는 TCP 프로토콜을 통해 메시지 세그먼트로 분할되고 일련 번호에 따라 여러 개의 메시지 세그먼트로 분할되며 각 메시지 세그먼트는 상대방에게 안정적으로 전송됩니다.
- IP 프로토콜을 통해 상대방의 주소를 검색하여 전송하면서 전송
- TCP 프로토콜을 통해 상대방으로부터 받은 메시지 세그먼트는 도착한 메시지 세그먼트를 재조립한 후 시퀀스 번호에 따라 요청 메시지를 원래의 순서대로 재조립
- HTTP 프로토콜을 통한 웹 서버 요청의 콘텐츠 처리
HTTP 기능
서버를 생성하려면 특정 IP 주소, 포트 번호, 클라이언트에서 서버로 보내는 요청 객체, 서버에서 클라이언트로 보내는 응답 객체가 있어야 합니다.
- 기본 상태 비저장: http는 상태를 저장하지 않는 프로토콜이며 쿠키를 사용하여 상태를 관리할 수 있습니다.
- http(1.1) keep-alive 사용: 연결이 끊기지 않고 링크가 유지되어 각 요청으로 인한 tcp 링크의 불필요한 설정 및 연결 끊김을 방지합니다.
- 기본 파이프라인: 이전에는 요청을 보낸 후 응답을 기다려야 다음 요청을 보낼 수 있었지만 지금은 모두 파이프라인으로 연결되어 동시 요청이 가능합니다.
HTTP 단점
- 명확한 텍스트로 커뮤니케이션
- 통신 당사자의 신원을 확인하지 마십시오.
- 콘텐츠의 무결성을 확인할 수 없음(콘텐츠가 변조되었을 수 있음)(https로 처리 가능)
HTTP 방식
요청 방법:
- GET: URL을 통해 데이터 전달
- POST: 본문 전송 데이터 요청
도구
- 우편 배달부: (시각적 요청 도구)
- curl: git을 설치해야 합니다(명령줄).
RESTFUL 스타일: 사양이 아니라 다양한 요청 방법에 따라 서버 리소스의 작동을 실현하는 것입니다.
- 가져오기: 데이터 요청
- 게시물: 데이터 증가
- 삭제: 데이터 삭제
- 넣어: 데이터 수정
- 옵션: 실행 전 요청(기본적으로 도메인 간에 옵션 요청을 보낼 수 있음)
단순 요청: get 및 post는 단순 요청입니다.
복합 요청: 가져오기 및 게시에 사용자 지정 헤더를 추가하면 복합 요청이 됩니다. 다른 모든 방법은 복잡한 요청입니다. 복잡한 요청이 전송되면 기본적으로 옵션 요청이 먼저 전송됩니다.
교차 도메인: 프로토콜, 도메인 이름 및 포트 번호가 동일하지 않으면 교차 도메인입니다.
도메인 간 문제를 해결하는 일반적인 방법:
- cors(서버가 교차 도메인을 확인하고 교차 도메인 헤더를 추가함)
- jsonp
- nginx(리버스 프록시)
- 웹소켓
도메인 간 문제를 해결하는 일반적이지 않은 방법:
- 아이프레임
- 포스트메시지
- 창.이름
- 문서.도메인
- 위치.해시
HTTP 상태 코드
- 101: 웹소켓
- 2xx
- 200: 성공
- 204: 성공했지만 응답 본문이 없음
- 206: 중단점 재개(데이터의 일부 반환)
curl -v --header Range:bytes=0-1024 www.baidu.com
- 3xx
- 301: 영구 리디렉션
- 302: 임시 리디렉션
- 304: 서버 캐시
- 307: 리디렉션(POST를 GET으로 변환하지 않음)
- 4xx
- 400: 클라이언트 매개변수가 올바르지 않습니다.
- 401: 권한 없음, 로그인 없음
- 403: 권한 없음, 권한 없이 로그인
- 404 찾을 수 없음
- 405: 서버가 이 방법을 지원하지 않습니다. 허용되지 않는 방법입니다.
- 5xx
- 500: 서버 문제
- 502: 로드 밸런싱에 문제가 있습니다.
- 503: 서버에서 오류를 보고합니다.
메시지
요청한 메시지
- 요청 라인: 요청 방법, 요청 경로(해시 제외), http 버전 번호(매개
?
변수 전달 가능) 포함 - 요청 헤더: 데이터, 사용자 지정 헤더를 전달할 수도 있습니다.
- 요청 본문: 데이터를 넣을 수 있고, 데이터 바이너리를 전송할 수 있습니다...
응답 메시지
- 응답 라인: http 버전, 상태 코드, 응답 문구
- 응답 헤더: 사용자 정의 응답 정보
- 응답 본문: 브라우저에 반환되는 콘텐츠