[모두의네트워크&그림으로 배우는HTTP&Network] 3주차 공부

김서영·2021년 10월 2일
0

네트워크 스터디

목록 보기
3/12


HTTP 메세지

HTTP에서 교환하는 정보. Request와 Response 측 모두 메세지가 존재.

메세지 헤더
개행 문자(CR+LF)
메세지 바디
[메세지 헤더]

서버와 클라이언트가 꼭 처리해야 하는 리퀘스트와 리스폰스 내용과 속성 등

[CR+LF]

CR(Carriage return : 16진수 0x0d)
LF(line feed : 16진수 0x0a)

[메세지 바디]

꼭 전송되는 데이터 그 자체



이미지 출처: https://www.hyojae.info/9141e6c1-0f97-4172-8853-989db5255dec

메세지 바디와 엔티티 바디의 차이

메세지(message)

HTTP 통신의 기본 단위로 옥텟 시퀀스(Octet sequence)로 구성되고 통신을 통해서 전송.

엔티티(entity)

Request랑 Response의 페이로드(payload, 부가물)로 전송되는 정보로 엔티티 헤더 필드와 엔티티 바디로 구성.

HTTP 메세지 바디는 리퀘스트/리스폰스에 관한 엔티티 바디를 운동반하는 게 일. 기본적으로, 메세지 바디와 엔티티 바디는 같으나 전송 코딩이 적용된 경우 엔티티 내용이 달라짐.

인코딩

인코딩을 사용할 시, 전송 효율을 높일 수 있음.

콘텐츠 코딩

파일 Zip 하는 경우와 같이 압축해서 보내느 콘텐츠 코딩.
엔티티에 적용하는 인코딩을 가르키는데 엔티티 정보를 유지한 채로 압축. 콘텐츠 코딩된 엔티티는 수신한 클라이언트 측에서 디코딩.

  • gzip(GNU zip)
  • compress(UNIX의 표준 압축)
  • deflate(zlib)
  • identity(인코딩 없음)
청크 전송 코딩

사이즈가 큰 데이터를 전송하는 경우, 데이터를 분할해서 조금씩 표시. 엔티티 바디를 분할하는 기능이 청크 전송 코딩.
엔티티 바디를 청크(덩어리)로 분해 후, 청크 사이즈를 16진수를 사용하여 단락을 표시하고 엔티티 바디 끝에 "0(CR+LF)"를 기록.
청크 전송 코딩된 엔티티 바디는 수신한 클라이언트 측에서 원래의 엔티티 바디로 디코딩.

여러 데이터를 보내는 멀티파트

MIME (Multipurpose Internet Mail Extensions: 다목적 인터넷 메일 확장 사양)은 메일로 텍스트나 영상, 이미지와 같은 여러 다른 데이터를 다루기 위한 기능.
MIME는 이미지 등의 바이너리 데이터를 아스키(ASCII) 문자열에 인코딩하는 방법과 데이터 종류를 나타내는 방법 등을 규정. 이 MIME의 확장 사양에 있는 멀티파트(multipart)를 사용.

  • multipart/form-data
  • multipart/byteranges

일부분만 받는 레인지 리퀘스트

리줌(Resume) 기능을 통해 이전에 다운로드를 한 곳에서부터 다운로드를 재개. 이 기능을 위해서는 엔티티의 범위를 지정해야하는데 이렇게 범위를 지정해서 리퀘스트하는 것을 레인지 리퀘스트(Range Request)라고 함.
레인지 리퀘스트에 대한 리스폰스는 상태코드 206 Partial Content가 돌아오고 복수 범위의 레인지 리퀘스트에는 multipart/byteranges가 돌아옴.
다만, 서버가 레인지 리퀘스트에 지원하지 않는 경우에는 상태코드 200 OK라는 리스폰스 메세지로 완전한 엔티티가 돌아옴.

최적의 콘텐츠를 돌려주는 콘텐츠 네고시에이션

번역된 페이지처럼, 같은 콘텐츠(내용)이지만 여러 개의 페이지를 지닌 웹 페이지의 경우, 같은 URL에 엑세스할 때 다른 판 웹 페이지 표시. 이와 같은 구조를 콘텐츠 네고시에이션(Content Negotiation)이라 함.
콘텐츠 네고시에이션은 클라이언트와 서버가 제공하는 리소스의 내용에 대해 교섭하고 클라이언트에 더욱 적합한 리소스를 제공하기 위한 구조. 언어와 문자 세트, 인코딩 방식 등을 기준으로 판단.

서버 구동형 네고시에이션(Server-driven Negotiation)

서버 측에서 콘텐츠 네고시에이션을 하는 방식.

에이전트 구동형 네고시에이션(Agent-driven Negotiation)

클라이언트 측에서 콘텐츠 네고시에이션을 하는 방식.

트랜스페어런트 네고시에이션(Transparent Negotiation)

서버 구동형과 에이전트 구동형을 혼합한 것.

물리 계층: 데이터를 전기 신호로 변환하기

전기신호

랜 카드

컴퓨터는 네트워크를 통해 데이터를 송수신할 수 있도록 랜 카드가 메인 보드에 포함되어 있는 내장형 랜 카드나 별도의 랜 카드를 가지고 있음. 0과 1의 정보가 컴퓨터 내부엥 ㅣㅆ는 랜 카드로 전송되고 랜 카드가 0과 1을 전기 신호로 변환.

전송 매체

데이터가 흐르는 물리적인 선로 => 유선, 무선

트위스트 페어 케이블(랜 케이블)

실드는 금속 호일이나 금속의 매듭과 같은 것으로 외부에서 발생하는 노이즈를 막는 역할.

  • UTP 케이블
    구리 선 여덟 개를 두 개씩 꼬아 만든 네 쌍의 전선으로 실드로 보호되어 있지 않음. 노이즈 영향 받음. 값이 저렴. 일반적으로 많이 사용.
  • STP 케이블
    두 개씩 꼬아 만든 선을 실드로 보호한 케이블. 노이즈 영향 적음. 값이 비쌈. 보편적으로 쓰이진 않음.

  • 다이렉트 케이블
    구리선 여덟 개를 같은 순서로 커넥터에 연결한 케이블. 컴퓨터와 스위치를 연결할 때 사용.
  • 크로스 케이블
    구리 선 여럽 개 중 한쪽 커넥터의 1번과 2번에 연결된 구리 선을 다른 쪽 커넥터의 3번과 6번에 연결한 케이블. 컴퓨터 간에 직접 랜 케이블로 연결할 때 사용.

다이렉트 케이블과 크로스 케이블 모두 실제로는 1,2,3,6번 구리선 만을 사용.

리피터(Repeater)

전기 신호를 정형하고 증폭하는 기능을 가진 네트워크 중계 장비.
최근에는 필요없어짐.

허브(Hub)

포트(실제로 통신하는 통로)를 여러 개 가지고 있어 컴퓨터를 여러 대 연결할 수 있음. 허브는 리피터와 같이 전기 신호를 정형하고 증폭하는 기능. 다만, 허브는 어떤 특정 포트로부터 데이터를 받는다면 해당 포트를 제외한 나머지 모든 포트로도 받은 데이터를 전송함. 더미 허브(dummy hub)라고 불리기도 함.

profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글