기술면접 및 CS 복습을 위해 정리한 글 입니다.
전공 수업(데이터 통신, 컴퓨터 통신, 네트워크 보안) 에서 배운 내용을 아주 짧고 얕게 정리한 내용이니 자세한 내용이 궁금하시다면 서적을 따로 구매하여 공부하시는 것을 추천드립니다 !
OSI7계층
- level 1 : Physical Layer(물리계층) , bit stream을 전송하는 계층
- level 2 : Data Link Layer (데이터 계층), frame을 전송하고 이를 통해 속도제어, 오류제어, 접근제어의 역할을 한다.
- level 3 : Network Layer (네트워크 계층) , 패킷을 전달하는 계층 라우팅을 해준다.
- level 4 : Transport Layer (전송 계층) , 프로세스에서 프로세스로의 전송을 담당하는 계층으로 흐름제어 및 재전송을 통한 오류제어를 제공한다
- level 5 : Session Layer(세션 계층) , 컴퓨터끼리 통신을 위해 세션을 만드는 계층
- level 6 : Presentation Layer(표현 계층), 데이터의 형식을 정의하는 계층
- level 7 : Application Layer (응용 계층) , 사용자와 직접 상호작용하는 응용 프르그램들이 포함된 계층
전송층의 대표 프로토콜
- TCP : connection oriented, reliable, 흐름,오류,혼잡 제어를 제공한다. 3-way handshake를 통해 연결을 한다.
- UDP : connectionless, unreliable, 논리적 연결 없이 유저 데이터 그램을 통해 패킷을 전달하기에 오버헤드가 작고 빨라 실시간성이 중요한 서비스에 주로 사용된다. 대표적으로 DNS가 UDP를 사용한다.
- SCTP : connection oriented, reliable, UDP와 TCP를 합쳐놓은 형태로 멀티 미디어에 적합하다.
IP할당 과정
- 클라이언트가 broad cast로 255.255.255.255를 발송한다→ 이를 발견한 DHCP들이 사용가능한 주소를 넣어 회신한다 → 클라이언트가 그 중 하나를 골라 identifier option에 주소를 넣고 다시 broad cast를 한다→ 이를 보고 다른 DHCP는 자신이 할당한 주소가 사용되지 않았음을 알게되고 해당 주소의 DHCP는 해당 주소를 클라이언트가 사용한다는 것을 알게된다.
HTTPS vs HTTP
- HTTP over SSL(TLS)를 의미한다.
- TLS 핸드쉐이크를 한다.
- TLS란 Transport Layer Security를 의미하고, 여러 프로토콜을 제공하는데 그 중 핸드셰이크 프로토콜이란 4단계를 거치는 프로토콜인데
- 1단계 보안 기능 설정: client hello, server hello
- 2단계 서버 인증과 키 교환: (certificate), (server_key_exchange), (certificate_request), server_hello_done
- 3단계 클라이언트 인증과 키 교환: (certificate), client_key_exchange, (certificate_verify)
- 4단계 종료 : change_cipher_spec, finished, change_cipher_spec, finished
- TLS란 Transport Layer Security를 의미하고, 여러 프로토콜을 제공하는데 그 중 핸드셰이크 프로토콜이란 4단계를 거치는 프로토콜인데
- 이처럼 HTTPS는 “비연결적”인 HTTP에 전송계층보안을 적용하여 기존에 평문으로 전달하던 데이터를 암호화 하여 안전하게 전달할 수 있게 해준다.
- HTTP는 응용계층의 프로토콜로 TCP/IP위에서 작동하고, Stateless프로토콜이며 Method(Get,Post,Delete,Patch ..), Path(경로), Version(1.1 ..), Header, Body 등으로 구성된다.
- HTTP1 : 연결당 하나의 요청,응답 처리
- HOL Blocking : 클라이언트의 요청과 서버의 응답이 동기화 되어 지연이 발생된다
- RTT 증가 : 패킷의 왕복 시간의 지연이 발생한다.
- 헤더 크기의 비대 : 쿠키와 같은 메타데이터에 의해 헤더가 비대해진다.
- HTTP2
- Multiplexed Streams : 하나의 커넥션으로 여러개의 메세지 주고 받을 수 있게 함
- Stream Prioritization : 요청의 우선순위를 부여
- Header Compression : 헤더 정보를 HPACK으로 압축 전송한다.
- Server Push : HTML문서 상에 필요한 리소스를 클라이언트의 요청없이 보내준다.
- HTTP1 : 연결당 하나의 요청,응답 처리
- HTTP는 응용계층의 프로토콜로 TCP/IP위에서 작동하고, Stateless프로토콜이며 Method(Get,Post,Delete,Patch ..), Path(경로), Version(1.1 ..), Header, Body 등으로 구성된다.
주소창에 URL을 입력하면 어떻게 될까?
- 사용자가 브라우저에 URL을 입력한다
- 브라우저가 DNS를 통해 서버의 주소를 찾아준다.
- HTTP(s)를 사용하여 요청 메세지를 만든다
- TCP/IP 연결을 통해 해당 요청이 서버로 전달된다.
- 만약 웹서버가 리버스 프록시를 적용했다면 해당 적용 설정에 따라 요청온 경로에 맞는 서버에게 요청을 전달한다.
- 서버에서 해당 요청에 맞는 응답을 생성하여 HTTP 응답 메세지를 만들어 다시 브라우저를 향해 전송한다.
- 브라우저에서 받은 응답을 확인한다.
SSH
- 원격 로그인, X tunneling용으로 선택되고 TCP상에서 구현된다
- SSH TLP(ssh 전송 계층 프로토콜) : 전방향 기밀 즉, 한 세션에 손상이 발생해도 이전 세션의 보안에 영향을 미치지 않는다는 특징이 있다.
- 서버가 클라이언트에게 인증을 받는 프로토콜
- SSH UAP(ssh User Authentication Protocol) : 클라이언트가 서버에게 인증을 받는 프로토콜이다.
포트포워딩
- 안전하지 않은 TCP연결을 안전한 SSH연결로 변환하는 것
- SSH 터널링 이라고도 한다.
- 로컬 포워딩 : 클라이언트가 선택한 응용레벨의 트래픽을 가로채어 ssh로 연결을 전환하는 것
- 원격 포워딩 : SSH 서버에서 포워딩을 설정하는 것
NAT (Network Address Translation)
- 로컬 네트워크 (LAN)에서 쓰이는 private address를 NAT 변환 테이블을 이용해 외부 네트워크 (WAN)에서 쓰이는 IP address로 변환한다.
- 이때 NAT 라우터는 외부에서 보면 하나의 IP를 갖는 하나의 장비로 보이지만, port번호를 통해 요청에 맞는 내부 망의 서버로 요청을 전달한다.
서브넷
- 호스트와 물리적 링크 사이를 인터페이스라 하는데, 라우터 없이 여러 인터페이스를 하나로 연결시키는 네트워크를 서브넷이라 한다.
- IP주소체계에서 서브넷에 a.b.c.d/x 의 주소를 할당하는데 슬래시 뒤의 숫자를 서브넷 마스크라 한다
- 이 서브넷 마스크는 해당 서브넷에 왼쪽 x bit가 서브넷의 주소임을 의미한다.
- 이러한 주소 할당 방식을 CIDR (사이다)라고 한다.