TCP/IP란?
정의
TCP/IP 4계층은 장치들이 인터넷 상에서 데이터를 주고 받을 때 쓰는 독립적인 프로토콜의 집합입니다.
각 계층 설명
- 어플리케이션 계층 (Application Layer)
- HTTP,SMTP,SSH,FTP 가 대표적이며 웹사이트 등 실제로 유저에게 제공하는 층입니다.
- 전송 계층 (Transport Layer)
- TCP, UDP가 대표적이며 어플리케이션에서 받은 데이터를 기반으로 세그먼트 or 데이터그램으로 데이터를 쪼개고 전달하는 층
- 인터넷 계층 (Internet Layer)
- IP,ARP가 대표적이며 한 노드에서 다른 노드로 전송 계층에서 받은 세그먼트 또는 데이터그램을 패킷화 하여 목적지로 전송한다.
- 링크 계층 (Network Layer)
- 전선, 광섬유, 무선 등으로 데이터가 네트워크를 통해 물리적으로 전송되는 방식이다.
- 어플리케이션 계층 (Application Layer)
OSI 7계층이란?
정의
OSI 7계층은 장치들이 인터넷 상에서 데이터를 주고 받을 때 쓰는 독립적인 프로토콜의 집합입니다.
각 계층 설명
- 어플리케이션 계층(Application Layer)
- HTTP,SMTP,SSH,FTP 가 대표적이며 웹사이트 등 실제로 유저에게 제공하는 층입니다.
- 표현 계층 (Presentation Layer)
- 데이터 표현에 대한 독립성을 제공하고 암호화하는 역할을 담당한다.
- 파일 인코딩, 명령어 포장, 압축, 암호화
- 세션 계층 (Session Layer)
- 데이터가 통신하기 위한 논리적 연결을 담당한다.
- 데이터 교환과 에러 발생시 복구를 관리
- 전송 계층 (Transport Layer)
- TCP, UDP가 대표적이며 어플리케이션에서 받은 데이터를 기반으로 세그먼트 or 데이터그램으로 데이터를 쪼개고 전달하는 층
- 네트워크 계층 (Network Layer)
- 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능을 담당한다.
- 라우터를 통해 이동할 경로를 선택해 IP주소를 지정하고 패킷을 전달한다.
- 라우팅, 흐름 제어, 오류 제어, 세그멘테이션 등을 수행한다.
- 데이터링크 계층 (Data-Link Layer)
- 물리 계층으로 송수신되는 정보를 관리해 신뢰성있는 정보 전달을 담당 (Point-to Point)
- MAC 주소를 통해 통신한다.
- 물리 계층 (Physical Layer)
- 전기적, 기계적 특성을 이용해 데이터 전송
- 데이터는 0과 1의 비트, 데이터 전송만을 담당
- 어플리케이션 계층(Application Layer)
왜?
- 왜 두개로 나눠진걸까?
OSI 모델은 ISO(International Standard Organization)에서 개발한 반면
TCP 모델은 ARPANET(Advanced Research Project Agency Network)에서 개발했다.
네트워크를 설명하는 비슷한 두개의 축이다. - 각각의 장단점은?
OSI 모델은 다른 시스템과의 상호 연결 및 통신에 개방된 시스템에서 사용되는 네트워크 통신을 정의할 때 더 좋고, TCP/IP는 특정 컴퓨터가 인터넷에 연결되는 방법과 컴퓨터 간에 전송되는 방법을 결정하는 데 도움이 된다고 알려져있다. - 각 계층을 나누는 이유는?
다른 계층과 영향을 받지 않고 독립적으로 발전할 수 있기 때문이다,예를들면, http의 경우 어플리케이션 계층이다.
http1에서 http3으로 발전할 때 IP프로토콜의 버전을 업그레이드를 하지 않아도 괜찮다.
각각의 계층이 독립적으로 나눠져있기 때문에 각각의 프로토콜 등이 유연하게 발전해나갈 수 있다.
PDU란?
정답
PDU란 TCP/IP 4계층을 기반으로 각 계층의 데이터 단위를 의미한다.
- 애플리케이션 : 메세지
- 전송 : 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 : 패킷
- 링크 : 프레임(데이터 링크 계층), 비트(물리 계층)
TCP와 UDP?
TCP
패킷의 순서를 보장하고 연결지향 프로토콜을 사용해 신뢰성을 구축해 수신 여부를 확인, 가상회선 패킷 교환 방식을 사용한다.
UDP
순서를 보장하지 않고 비연결형 프로토콜로 순서를 보장하지 않으며 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용한다.
DNS에서 UDP를 사용하는 이유?
TCP와 UDP는 각각 신뢰성vs속도의 특징을 가지고 있다.
따라서, TCP - HTTP,Email, File Transfer / UDP - DNS,Broad Casting에 많이 사용한다.
DNS는 하기와 같은 특징으로 UDP를 사용한다.
연결의 시작 과 끝 설정이 없다는 점만약 dns가 tcp위에서 동작한다면 많이 느려질 것.
반면 http문서로 된 웹페이지는 신뢰성이 중요하기 때문에 udp보다 tcp를 사용한다.dns: 신뢰성<속도
웹페이지: 신뢰성>속도tcp 는 데이터 전송을 시작하기 전에 3-way-handshake를 사용하는 반면에 udp는 형식적인 예비동작이 없다. 따라서 연결 설정에 드는 비용이 없다.
연결 상태를 유지 할 필요가 없다.반면 udp는 어떠한 정보도 기록하지 않고 유지할 필요가 없다.도메인네임을 ip로 변경함으로 항상 많은 클라이언트를 수용하는 dns 서버에게는 연결상태를 유지 하지 않아 정보 기록을 최소화 하는 udp가 알맞다.
따라서 특정 애플리케이션에 할당된 서버는 애플리케이션이 tcp보다 udp에서 동작할 때 더 많은 클라이언트를 수용할 수 있다.
정리 : DNS는 신뢰성 보다 속도가 중요하기 때문에 UDP를 사용한다.
3 way handshake / 4 way handshake
정답
TCP 연결과 해제를 위해 사용된다.
3 Way HandShake는 클라이언트에서 SYN, 서버에서 SYN,ACK, 클라이언트에서 ACK응답을 통해 연결할 수 있다.4 Way HandShake는 연결 해제에 사용되며 각각 FIN,ACK 응답을 통해 해제한다.
TIME_WAIT은 왜할까?
지연 패킷을 위해 존재하며 데이터 무결성을 유지하기 위함이다.
우분투 등은 60초 윈도우는 4분정도 유지한다.
대칭키 & 공개키
대칭키
암호화와 복호화에 같은 키를 사용하는 방식
공개키/비대칭키
암호화와 복호화에 사용하는 암호키를 분리하는 방식
혼합방식
SSL방식의 시초
1. A가 B의 공개키로 암호화 통신에 사용할 대칭키를 암호화하고 B에게 보냄 2. B는 암호문을 받고, 자신의 비밀키로 복호화함 3. B는 A로부터 얻은 대칭키로 A에게 보낼 평문을 암호화하여 A에게 보냄 4. A는 자신의 대칭키로 암호문을 복호화함 5. 앞으로 이 대칭키로 암호화를 통신함
즉, 대칭키를 주고받을 때만 공개키 암호화 방식을 사용하고 이후에는 계속 대칭키 암호화 방식으로 통신하는 것!
경험
HTTP→HTTPS
HTTP & HTTPS
HTTP
어플리케이션 계층으로 웹사이트 데이터 통신 프로토콜이다.
HTTP 1.0
하나의 연결에 하나의 요청만 처리하는 특징HTTP 1.1
Keep Alive 옵션의 표준화로 하나의 연결에 여러개의 요청을 처리할 수 있다.
HOL Blocking, 무거운 헤더의 단점이 있음.
HOL Blocking은 같은 큐에 있는 패킷 중 첫번째에 있는 패킷으로 인한 성능저하 문제
HTTP 2
지연 시간을 줄이고 응답 시간을 더 빠르게 할 수 있으며 멀티플렉싱, 헤더 압축, 서버 푸시, 요청의 우선순위 처리를 지원하는 프로토콜이다.HTTP 3
HTTP/3는 TCP 위에서 돌아가는 HTTP/2와 달리 QUIC라는 계층 위에서 돌아가며 UDP 기반으로 돌아간다.
HTTP/2의 장점인 멀티플렉싱 등을 가지고 있으며, 초기연결설정시 지연시간 감소라는 대표적 특징과 순방향 오류 수정 메커니즘이라는 특징을 가진다.
HTTPS
인터넷 상에서 정보를 암호화하는 SSL/TLS 프로토콜을 사용해 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약
TLS?
인터넷에서의 정보를 암호화해서 송수신하는 프로토콜 (SSL → TLS)
TLS를 사용해 암호화한 HTTP사이트를 HTTPS사이트라고 하며 443 포트를 사용한다.경험
HTTP→HTTS
로드 밸런싱(Load Balancing)
정답
둘 이상의 CPU or 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것
로드 밸런서가 서버를 선택하는 방식
- 라운드 로빈(Round Robin) : CPU 스케줄링의 라운드 로빈 방식 활용
- Least Connections : 연결 개수가 가장 적은 서버 선택 (트래픽으로 인해 세션이 길어지는 경우 권장)
- Source : 사용자 IP를 해싱하여 분배 (특정 사용자가 항상 같은 서버로 연결되는 것 보장)
경험
Nginx를 활용해 api서버 분리 경험
Blocking&Non-Blocking & Synchronous/Asynchronous
정답
Blocking : 함수 B는 내 할 일을 다 마칠 때까지 제어권을 가지고 있는다. A는 B가 다 마칠 때까지 기다려야 한다.
Non-blocking : 함수 B는 할 일을 마치지 않았어도 A에게 제어권을 바로 넘겨준다. A는 B를 기다리면서도 다른 일을 진행할 수 있다.
Synchronous : 함수 A는 함수 B가 일을 하는 중에 기다리면서, 현재 상태가 어떤지 계속 체크한다.
Asynchronous : 함수 B의 수행 상태를 B 혼자 직접 신경쓰면서 처리한다. (Callback)
'면접,CS > 면접(정리)' 카테고리의 다른 글
[면접] 프론트엔드 기술면접 (0) | 2023.02.16 |
---|