<면접을 위한 CS 전공지식 노트>를 읽고 정리하였다.
CHAPTER 2 네트워크
HTTP : 애플리케이션 계층으로서 웹 서비스 통신에 사용 HTTP/1.0 ~ HTTP/3
HTTP/1.0
서버로부터 파일을 가져올 때마다 TCP의 3-way handshake 계속 열어야 해서 RTT 가 증가하는 단점이 있었음
RTT : 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간이며 패킷 왕복 시간
해결 방법 : 스플리팅, 코드 압축, 이미지 Base64 인코딩 사용
이미지 스플리팅 : 이미지가 합쳐 있는 하나의 이미지를 다운받고, 이를 기반으로 background-image의 position 을 이용하여 이미지 표기 하는 방법
코드 압축 : 코드를 압축해서 개행 문자, 빈칸을 없애서 코드의 크기를 최소화하는 방법
이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩 (장점 : 서버와의 연결을 열고 이미지에 대해 서버에 HTTP 요청을 할 필요가 없음. 단점 : 37% 정도 크기가 커짐)
인코딩 : 정보의 형태나 표준화, 보안, 처리속도향상, 저장공간절약 등을 위해 다른 형태나 형식으로 변환하는 처리 방식
HTTP/1.1
매번 TCP 연결을 하는 게 아니라 TCP 초기화 한 이후에 keep-alive 옵션으로 여러 개의 파일을 송수신 할 수 있도록 바꿈
단점
HOL Blocking(Head Of Line Blocking) : 네트워크에서 같은 큐에 있는 패킷이 그 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
무거운 헤더구조 : 쿠키 등 많은 메타 데이터가 들어 있고 압축되지 않아 무거움
HTTP/2
지연시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며, 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위를 지원하는 프로토콜
멀티플렉싱 : 여러 개의 스트림을 사용하여 송수신
해더 압축 (허프만 코딩 압축 알고리즘을 사용하는 HPACK 압축 형식을 가짐)
cf . 허프만 코딩 (huffman coding) : 문자열을 문자 단위로 쪼개 빈도수를 세어 빈도수가 높은 정보는 적은 비트 수를 사용하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트양을 줄이는 원리
서버푸시 : 클라이언트 요청 없이 서버가 바로 리소스를 푸시
SSL(Secure Socket Layer) TLS (Transport Layer Security Protocol) : 전송계층에서 보안을 제공하는 프로토콜
제 3자가 메세지를 도청하거나 변조하지 못하도록 함 (보안 세션이 만들어질 때 인증 메커니즘, 키 교환 알고리즘, 해싱 알고리즘이 사용)
보안 세션 : 보안이 시작되고 끝나는 동안 지되는 세션
세션 : 운영체제가 어떠한 사용자로부터 자신의 자산 이용을 허락하는 일정한 기간
클라이언트에서 사이퍼 슈트(cypher suites) 를 서버에 전달→ 서버는 받은 사이퍼 슈트의 암호화 알고리즘 리스트를 제공할 수 있는 지 확인 → 서버에서 클라이언트로 인증서를 보내는 인증 매커니즘 시작 → 해싱 알고리즘 등으로 암호화된 송수신 시작
HTTP/3
TCP 위에서 돌아가는 HTTP/2와는 달리 HTTP/3는 QUIC 계층 위에서 돌아가며 TCP 기반이 아니라 UDP 기반으로 돌아감
멀티플렉싱 가지고 있고 초기 연결 설정 시 지연 시간 감소라는 장점
QUIC : tcp 사용하지 않기 때문에 3-way handshake 거치지 않아도 됨. 첫 연결 설정 때 1-RTT만 소요
순방향 오류 수정 매커니즘(FEC, Forword Error Correction) 적용 → 전송한 패킷이 손실되었다면 수신 측에서 에러를 검출하고 수정하는 방식이며 열약한 네트워크 환경에서도 낮은 패킷 손실률 자랑함.
출처 : 면접을 위한 CS 전공지식 노트 - 주홍철 지음
cs 전공식노트에서 네트워크 파트는 끝났다. 이번 방학이 끝나기 전에 학교에서 배웠던 네트워크 파트 다시 복습하고 정리해서 올리자
네트워크 PART 참고하면 좋을 포스트
신입 개발자 기술면접 질문 정리 - 네트워크
https://dev-coco.tistory.com/161
신입 개발자 기술면접 질문 정리 - 네트워크
💡 HTTP 프로토콜에 대해 설명해주세요. HTTP(Hyper Text Transfer Protocol)이란 데이터를 주고 받기 위한 프로토콜이며, 서버/클라이언트 모델을 따릅니다. HTTP는 상태 정보를 저장하지 않는 Stateless의 특
dev-coco.tistory.com
네트워크 파트 관련해서 잘 정리되어 있어서 참고하면 좋을 것 같다!!
'공부기록 > CS' 카테고리의 다른 글
[CS 전공지식 노트] 네트워크 (4) (2) | 2024.01.03 |
---|---|
[CS 전공지식 노트] 네트워크 (3) (1) | 2024.01.03 |
[CS 전공지식 노트] 네트워크 (2) (1) | 2024.01.02 |
[CS 전공지식 노트] 네트워크 (1) (1) | 2024.01.02 |