오늘은 오전에 가벼운 개발 공부를 하고 오후 면접을 위해 이론에 대한 공부를 했다. 정식 면접은 아니지만 오랜만에 이런 자리라
살짝 긴장이 되기도 했지만 이런 자리가 재밌는 사람으로써 기대를 하고 있었다.
오늘 학습한 내용
IP의 개념
네트워크 상에서 데이터를 전달하는 프로토콜, IP주소를 이용해 송신자와 수신자를 식별한다.
IP 주소 체계
IPv4, IPv6가 있고 IPv4는 4개의 8비트 숫자로 구성되어있으며 서브넷 마스크를 이용해 네트워크 주소와 호스트 주소를 구분할 수 있다.
IPv6는 8개의 16비트 숫자로 구성되어고 IPv4의 주소 부족 문제 해결을 위해 만듬, 특징으로 주소 자동 설정과 보안기능이 내장되어있다는 점과
서브넷 마스크는 네트워크 주소와 호스트 주소를 구분하는데 사용되며 하나의 네트워크를 더 작은 서브넷으로 나누어 네트워크 자원을 효율적으로 사용할 수 있다.
서브네팅을 하는 이유 > 구역별 우편번호 나눔, 트래픽 충돌이 적고 효과적으로 데이터를 전달 가능
URL 검색
DNS조회 > TCP 연결 > HTTP/HTTPS 요청 및 응답 > 브라우저 렌더링
사용자가 검색하면 DNS 서버에 요청을 보내고 서버는 도메인에 매핑된 IP주소 반환, 이후 브라우저는 3way handshake 방식으로 TCP연결을 설정(웹서버와 연결), 서버로 HTTP, HTTPS 요청을 보내고 서버는 요청으로 들어온 것에 대한 응답을 보냅니다. 이후 브라우저가 반환된 응답을 기준으로 렌더링하여 화면에 표시
HTTP, HTTPS 차이 - 암호화, 편지를 생으로 전달, 암호화 한 뒤 잠금장치 처리 후 전달, 아무나 보고 못보고 차이
라우터
네트워크 계층의 장치로 네트워크 간 데이터를 전달할때 사용됩니다. 목적지 IP주소 기반으로 최적의 경로 선택
라우팅이란 패킷을 송신지에서부터 수신지까지 전달하기 위한 경로를 결정하는 과정
정적 라우팅 - 사용자가 직접 경로 설정, 작은 네트워크에서 적합, 네트워크 변경 시 직접 수정
동적 라우팅 - 경로를 자동 선택, 큰 네트워크에서 적합, 더 높은 처리비용이 듬
오늘 학습에 대한 추가 정보
CIDR란
CIDR은 서브넷 마스크를 비트 단위로 표현하여 네트워크와 호스트를 구분한다.
ex) 192.168.1.0./24
192.168.1.0 은 네트워크 주소
/24는 서브넷 마스크를 비트로 나타낸 것(255.255.255.0)
>> 8비트이므로 8*3은 24
주요 특징으로 유연한 네트워크 할당, 라우팅 테이블 효율화(슈퍼네팅), IPv4 주소 부족 문제 완화가 있다.
#슈퍼네팅이란 여러 개의 네트워크를 하나의 네트워크로 묶어 표현
(ex 192.168.0.0/16은 192.168.0.0/24, 192.168.1.0/24 등 여러 네트워크를 하나로 표현)
트러블 슈팅
TCP 연결에 관한 질문에서 TCP 연결은 HTTP 요청 응답이 끝나면 연결이 유지된다고 생각했음.
이유 : 3wayhandshake를 TCP 연결에서 사용하는데 종료하는데는 4wayhandshake라는 방식이 따로 있는 것으로 알고 있었음.
즉 요청 응답이 끝나면 비연속적 연결로 인해 연결이 끊기고 요청마다 3wayhandshake로 연결을 새로 맺기에 부하가 늘어남.
HTTP/1.1 이상에서 변경점
HTTP/1.1에서는 keep-alive 헤더를 이용해 TCP 연결을 유지하며 동일한 연결을 재사용 가능
HTTP/2 에서는 하나의 TCP 연결을 유지하며 여러 요청, 응답을 병렬로 처리가능
HTTP/3에서는 QUIC 프로토콜 기반으로 TCP가 아닌 UDP를 사용하며 하나의 연결을 유지한 상태로 다중 요청, 응답이 가능
# HTTP/1.1 이상에서는 keep-alive 설정으로 연결을 유지하거나 명시적으로 연결을 닫으면 종료