티스토리 뷰

네트워크

HTTP 개관

jfmam 2023. 3. 9. 17:18

http란?

💡 신뢰성 있는 데이터 전송 프로토콜로 전송 중 손상되거나 꼬이지 않음을 보장한다

웹 클라이언트와 서버

웹 서버란?

인터넷의 데이터를 저장하고 http 클라이언트가 요청한 데이터를 제공한다.

  1. 도메인에 접근해 http요청을 인터넷 도메인 주소로 서버에 요청한다
  2. 해당 리소스를 찾고 성공했다면 해당 리소스를 클라이언트에 반환한다.

그냥 간단히 말해서 http프로토콜을 사용하는 인터넷 주소에 접근하면 request response 하는거다.

리소스

웹서버에서 관리하는 콘텐츠

  • 정적콘텐츠, 동적콘텐츠로 분리된다.
    • 파일시스템에 저장되는 파일은 정적 콘텐츠로 분리된다
    • 특정 정보에 따라 변할 수 있는 콘텐츠는 동적콘텐츠로 분린된다
  • 콘텐츠의 종류는 한가지로 정의할 수 없다. 즉 어떤 종류의 콘텐츠도 리소스가 될 수 있다

미디어 타입

콘텐츠의 종류에 따라 MIME타입 이라는 포맷을 사용한다.

  • 사선(/)을 기준으로 주타입 부타입으로 구분이 된다.
  • Content-Type 헤더를 통해 확인이 가능하며 파일을 분석하는데 사용이 가능하다.

URI

리소스의 위치를 나타내고 식별자로 사용한다.

  • url과 urn 두 형태로 나뉘며 현재는 url을 사용한다.
  • 현재는 url과 구분을 두지않으며 일반적은 주소형태를 url표기법으로 나타낸다.

url

<http://liberaliberi.githuyb.io/introduction>

프로토콜 / 서버주소(도메인) / 리소스 위치.

http 트랜잭션

http프로토콜을 통해 request response의 일련의 과정

메소드

http의 여러가지 종류의 요청명령을 지원한다 (rest api를 통헤 crud operation을 지원한다.)

rest api란?

💡 http프로토콜을 통해 자원의 위치를 명시하고 메소드를 통해 crud operation을 실행한다.

 

상태코드

클라이언트에게 요청이 어떻게 왔는지 세자리 수를 통해 알려준다.

http 메시지 (entity)

클라이언트와 서버간의 데이터 요청 양식

  • 시작줄
    • 요청은 무엇을 해야하는지, 응답은 무슨일이 일어났는 지 반환한다.
    • 요청: 메소드, 주소, http 버전
    • 응답: http 버전, status, message
  • 헤더
    • 메시지의 부가정보를 의미한다
    • key, value 형태로 이루어져 있다.
  • 본문
    • 데이터를 실어보내는데 사용된다.
    • http 메소드에 따라 생략이 가능하다.

TCP 커넥션

💡 대중적이고 신뢰성 있는 인터넷 전송 프로토콜

 

  • tcp ip 계층의 3 4 계층을 맡고 있다.
  • 신뢰성을 기반으로 한 데이터를 전송한다.
    • 오류없는 데이터 전송
    • 순서대로 전달
    • 조각나지 않는 데이터 스트림
  • 패킷교환 프로토콜의 집합
    • 데이터를 일정크기로 잘라서 전송한다.
  • 어떤 환경에서는 신뢰성 있는 의사소통을 한다.

접속, ip주소, 포트번호

  • TCP 커넥션을 통하여 서버의 리소스에 접근한다.
    • url을 통해 요청하려는 주소에 접근이 가능하다.
  • ip주소와 포트번호를 통해 원하는 주소에 접근한다.
  • ip 계층에서 mac주소를 통해 원하는 서버까지 접근한다.
  • 포트번호를 통해 서버의 프로세스에 도달하여 커넥션을 요청한다.

순서

  1. URL에서 호스트명 추출
  2. DNS를 통해 IP로 변환, 포트번호 추출
  3. TCP커넥션 요청
  4. 성공하면 http 요청을 보낸다
  5. http 응답을 받는다.
  6. 커넥션 종료 후 문서를 보여준다. (이거 몰랐네 헿[)

추가 개념

  • 3 hand shaking (커넥션 요청) syn → syn + ack , ack
  • 4 hand shaking (커넥션 종료) fin(client) → ack, fin(server) → ack
  • 데이터를 주고받는 과정 seq, ack(seq+1),

웹의 구성요소

  • 프락시
  • 캐시
  • 게이트웨이
  • 터널
  • 에이전트

프락시

  • 보안을 위해사용
  • 특정컨텐츠 및 바이러스 차단
  • 요청과 응답 필터링

캐시

  • 자주 찾는 것의 사본을 저장해주는 프락시 서버
  • 근처의 캐시를 통해 빠르게 문서에 접근한다.

게이트웨이

  • http 트래픽을 다른프로토콜로 변환하기 위해 사용된다.

터널

  • 데이터를 열지않고 그대로전달한다.
  • 암호화 된 ssl 트래픽을 http 커넥션으로 연결하는데 사용된다. https

에이전트

  • http 요청을 만들어주는 클라이언트 프로그램 (브라우저, mobile 브라우저 등)
  • 사람의 통제없이도 돌아다니는 스파이더나 웹로봇도 에이전트가 된다.

출처

http 완벽가이드