Chapter1. TCP/IP
Chapter1-1. 네트워크의 시작
- 회선교환 방식
- 발신자와 수신자를 연결하기 위해 각각 할당된 전용선을 연결하는 방식으로 통신이 이루어졌다.
- 내가 연결하고자 하는 상대가 다른 상대와 연결중일 경우, 해당 연결이 끊어진 후에야 상대방과 연결할 수 있었다.
- 특정 회선이 끊어지는 경우, 처음부터 다시 연결이 필요했다.
- 패킷교환 방식
- 패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식이다.
- 각 패킷에는 출발지와 목적지 정보가 있고 이에 따라 패킷이 목적지를 향해 가장 효율적인 방식으로 이동한다.
- 이를 이용하면 특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있다.
Chapter1-2. IP/IP Packet
1. 클라이언트 요청 시, IP는 지정한 IP 주소(IP Address)에 패킷(Packet)이라는 통신 단위로 데이터 전달
2. 서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야 합니다. 서버 역시 IP 패킷을 이용해 클라이언트에 응답을 전달
IP Packet의 한계 (IP 프로토콜의 한계)
-
비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
-
비신뢰성
- 중간에 패킷이 사라질 수 있음
- 패킷의 순서를 보장할 수 없음
-
IP 프로토콜 보다 더 높은 계층에 TCP 프로토콜이 존재하기 때문에 앞서 다룬 IP 프로토콜의 한계를 보완할 수 있습니다.
Chapter1-3. TCP/UDP
ex) 채팅 프로그램
TCP특징 (전송 제어 프로토콜, Transmission Control Protocol)
- 연결 지향 - TCP 3 way handshake (가상연결)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
UDP특징 (사용자 데이터그램 프로토콜, User Datagram Protocol)
- 하얀 도화지에 비유 (기능이 거의 없음)
- 비 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 단순하고 빠름
- 신뢰성보다는 연속성이 중요한 서비스에 자주 사용됨 (e.g.실시간 스트리밍)
Chapter2. 네트워크 계층 모델
Chapter2-1. OSI 7계층 모델
7개의 계층
해당 모델은 하드웨어 및 소프트웨어가 수행하는 기능에 따라 이를 7개의 계층(또는 레이어라고도 부릅니다.)으로 구분
- 1계층 - 물리 계층: OSI 모델의 맨 밑에 있는 계층으로서, 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어하는 계층입니다. 주로 물리적 연결과 관련된 정보를 정의합니다. 주로 전기 신호를 전달하는데 초점을 두고, 들어온 전기 신호를 그대로 잘 전달하는 것이 목적입니다.
e.g. 디지털 또는 아날로그로 신호 변경
- 2계층 - 데이터링크 계층: 네트워크 기기 간의 데이터 전송 및 물리주소(e.g. MAC 주소)를 결정하는 계층입니다. 물리 계층에서 들어온 전기 신호를 모아 알아 볼 수 있는 데이터 형태로 처리 합니다. 이 계층에서는 주소 정보를 정의하고 출발지와 도착지 주소를 확인한 후, 데이터 처리를 수행합니다.
e.g. 브리지 및 스위치, MAC 주소
- 3계층 - 네트워크 계층: OSI 7 계층에서 가장 복잡한 계층 중 하나로서 실제 네트워크 간에 데이터 라우팅을 담당합니다. 이때 라우팅이란 어떤 네트워크 안에서 통신 데이터를 짜여진 알고리즘에 의해 최대한 빠르게 보낼 최적의 경로를 선택하는 과정을 라우팅이라고 합니다.
e.g. IP 패킷 전송
- 4계층 - 전송 계층: 컴퓨터간 신뢰성 있는 데이터를 서로 주고받을 수 있도록 하는 서비스를 제공하는 계층입니다. 하위 계층에서 신호와 데이터를 올바른 위치로 보내고 신호를 만드는데 집중했다면, 전송 계층에서는 해당 데이터들이 실제로 정상적으로 보내지는지 확인하는 역할을 합니다. 네트워크 계층에서 사용되는 패킷은 유실되거나 순서가 바뀌는 경우가 있는 데, 이를 바로 잡아주는 역할도 담당합니다.
e.g. TCP/UDP 연결
- 5계층 - 세션 계층: 세션 연결의 설정과 해제, 세션 메시지 전송 등의 기능을 수행하는 계층입니다. 즉, 컴퓨터간의 통신 방식에 대해 결정하는 계층이라고 할 수 있습니다. 쉽게 말해, 양 끝 단의 프로세스가 연결을 성립하도록 도와주고, 작업을 마친 후에는 연결을 끊는 역할을 합니다.
- 6계층 - 표현 계층: 응용 계층으로 전달하거나 전달받는 데이터를 인코딩 또는 디코딩하는 계층입니다. 일종의 번역기 같은 역할을 수행하는 계층이라고 볼 수 있습니다.
e.g. 문자 코드, 압축, 암호화 등의 데이터 변환
- 7계층 - 응용 계층: 최종적으로 사용자와의 인터페이스를 제공하는 계층으로 사용자가 실행하는 응용 프로그램(e.g. Google Chrome)들이 해당 계층에 속합니다.
e.g. 이메일 및 파일 전송, 웹 사이트 조회
- 헤더(데이터링크 계층에서는 트레일러) : 데이터를 상대방에게 보낼 때 각 계층에서 필요한 정보를 데이터에 추가
- 캡슐화 : 헤더를 붙여나가는 것
- 역캡슐화 : 상위 계층으로 데이터를 전달하며 각 계층에서 헤더를 제거해 나가는 것
Chapter2-2. TCP/IP 4계층 모델
TCP/IP 4계층 모델
: OSI 모델을 기반으로 실무적으로 이용할 수 있도록 현실에 맞춰 단순화된 모델
- 4계층: 어플리케이션 계층: OSI 계층의 세션 계층, 표현 계층, 응용 계층에 해당하며 TCP/UDP 기반의 응용 프로그램을 구현할 때 사용합니다.
e.g. FTP, HTTP, SSH
- 3계층: 전송 계층: OSI 계층의 전송 계층에 해당하며 통신 노드간의 연결을 제어하고, 신뢰성 있는 데이터 전송을 담당합니다.
e.g. TCP/UDP
- 2계층: 인터넷 계층: OSI 계층의 네트워크 계층에 해당하며 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅을 담당합니다.
e.g. IP, ARP, RARP
- 1계층: 네트워크 인터페이스 계층: OSI 계층의 물리 계층과 데이터 링크 계층에 해당하며 물리적인 주소로 MAC을 사용합니다.
e.g. LAN, 패킷망 등에 사용됨
클라이언트와 서버 모두 응용 계층에서 동작합니다.
- 클라이언트 : 서비스를 요청하는 측
- 서버 : 서비스를 제공하는 측
Chapter3. HTTP
Chapter3-1. HTTP의 특징
- 클라이언트 서버 구조
- 무상태 프로토콜 (Stateless), 비연결성 (Connectionless)
- HTTP 메세지
- 단순함, 확장 가능
- 현재는 Transfer-Encoding보다는 Content-Encoding을 사용하며, Transfer-Encoding을 사용하는 경우 chunked의 방식으로 사용합니다.
- chunked 방식의 인코딩은 많은 양의 데이터를 분할하여 보내기 때문에 전체 데이터의 크기를 알 수 없기 때문에 표현 데이터의 길이를 명시해야 하는 Content-Length 헤더와 함께 사용할 수 없습니다.