[CS] 2장 네트워크 - TCP/IP 4계층 모델

moo_min·2023년 3월 21일
0
post-thumbnail

# 인터넷 프로토콜 스위트(internet protocol suite)
- 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약의 모음, 서로 정보를 주고받는데 쓰이는 프로토콜의 집합

# TCP/IP 4계층 vs OSI 7계층

- OSI 계층은 애플리케이션 계층을 세 개로 나눔 / 링크 계층 = 데이터 링크 계층 + 물리 계층 / 인터넷 계층 = 네트워크 계층

이 계층들은 특정 계층이 변경되더라도 다른 계층에 영향을 받지 않도록 설계되어 있다!

> TCP/IP를 중심으로 알아보자~!


# 애플리케이션 계층(Application Layer)
- 응용프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
FTP : 장치 간의 파일을 전송하는데 사용되는 표준통신 프로토콜)
HTTP : World Wide Web을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 사용되는 프로토콜
SSH : 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
SMTP : 전자 메일 전송을 위한 통신 프로토콜
DNS : 도메인 이름과 IP주소를 매핑해주는 서버

# 전송 계층(Transport Layer)
- 송신자와 수신자를 연결하는 통신 서비스 제공
- 애플리케이션과 인터넷 계층 사이의 데이터 중계역할
- 대표적으로 TCP와 UDP

- TCP : 패킷 사이의 순서를 보장하고 연결지향 프로토콜을 사용해서 연결 → 신뢰성을 구축하여 수신여부 확인 📌가상회선 패킷 교환 방식
- UDP : 순서를 보장하지 않고 순서여부 확인x 단순히 데이터만 줌(신뢰성이 없는 계층) 📌데이터그램 패킷 교환 방식
*신뢰성이 없는 대신 속도가 빠르기에 주로 성능이 중요시되는 서비스에 사용

📌가상회선 패킷 교환 방식(TCP)
각 패킷에 가상회선 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 전송된 순서대로 패킷이 도착하는 방식

📌데이터그램 패킷 교환 방식(UDP)
패킷이 독립적으로 이동하며 최적의 경로를 선택하기에 도착한 패킷은 순서가 다를 수 있음

- TCP 연결 성립 과정 3-way handshake
1. 연결 요청 단계

클라이언트가 서버에게 클라이언트의 ISN(첫 번째 패킷에 할당된 임의의 시퀀스 번호)을 담아 SYN(연결 요청 플래그)을 보냄

2. 연결 승인 단계

서버(정확하게는 서버측 TCP)는 클라이언트(클라이언트 측 TCP)의 SYN(연결 요청 플래그)를 수신하고 서버의 ISN(임의의 시퀀스 번호)를 보내며 클라이언트의 ISN+1을 승인번호로 보냄

3. ACK단계

클라이언트는 서버의 ISN(임의의 시퀀스 번호)에 +1한 값을 승인번호로 사용하여 ACK(응답 플래그)에 담아 서버에 보냄

이후 신뢰성이 구축되어 클라이언트와 서버 호스트들은 각각 서로에게 데이터를 전송할 수 있다!

- TCP 연결 해제 과정 4-way handshake
1단계
연결을 닫고자 할 때, 클라이언트는 FIN 세그먼트(데이터?)를 서버에 보낸 후 FIN_WAIT_1 상태로 응답 기다림

2단계
서버는 ACK(응답 플래그)를 클라이언트로 보낸 후 CLOSE_WAIT 상태로 전환, 클라이언트는 ACK를 받으면 FIN_WAIT_1에서 FIN_WAIT_2 상태로 기다림

3단계
ACK를 보낸 서버는 일정 시간 이후에 클라이언트에게 FIN 세그먼트를 보냄

4단계
클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보냄, ACK를 받는 서버는 CLOSED상태가 됨, 마지막으로 클라이언트는 어느 정도의 시간을 대기한 후에 CLOSED상태가 전환 → 클라이언트&서버간의 모든 연결 해제

TIME_WAIT가 왜 필요할까?
- 지연 패킷이 발생할 경우를 대비하기 위함(데이터 무결성)
- 두 장치가 연결이 닫혔는지 확인하기 위함
그렇기에 연결을 해제하기 전에 잠시 기다리자!

# 인터넷 계층(Internet Layer)
- 노드(장치)로 부터 받은 네트워크 패킷을 지정된 목적지인 IP주소로 전송하기 위해 사용되는 계층
- 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달
- 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징
- IP, ARP, ICMP

# 링크 계층(Link Layer)
- 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는 '규칙'을 정하는 계층
- 네트워크 접근 계층이라고도 함
- 내부를 물리 계층데이터 링크 계층으로 나눌 수 있음

📌물리 계층
유선 LAN 무선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층

유선 LAN
- IEEE802.3이라는 프로토콜을 따르며 전이중화 통신 사용
*전이중화 통신 : 양쪽 장치가 동시에 송수신할 수 있는 방식, 송신로와 수신로로 나눠서 데이터를 주고받으며 현대의 고속 이더넷은 이 방식을 기반으로 통신함

- 유선 LAN을 이루는 케이블: 트위스트 페어 케이블(LAN 케이블), 광섬유 케이블(장거리 및 고속 통신 가능)

무선 LAN
- 수신과 송신에 같은 채널 사용 → 반이중화 통신 사용
*반이중화 통신 : 서로 통신은 가능하시만 동시에는 통신이 불가한 통신 방식, 대표적으로 CSMA/CA가 있으며 장치에서 데이터를 보내기 전에 회선이 비어있는지 확인하는 캐리어 감지 등을 통해 사전에 가능한 한 충돌을 방지하는 방식을 사용

- 무선 LAN을 이루는 주파수
와이파이(wifi) : 전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술, 무선 접속 장치(AP, 공유기) 필요, 유선 LAN 속에 흐르는 신호를 무선 LAN으로 바꾸어 한정된 범위 안에서 무선 인터넷 사용 가능
BSS : 기본 서비스 집합, BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조 / 하나의 와이파이가 운용되는 범위
ESS : 하나 이상의 BSS그룹

📌데이터 계층
이더넷 프레임을 통해 전달받은 데이터의 에러를 검출 및 캡슐화, 흐름 제어, 접근 제어를 담당하는 계층
Preamble : 송신자와 수신자의 동기화를 위해 사용, 이더넷 프레임이 시작임을 알림
SFD : 다음 바이트부터 MAC 주소 필드가 시작됨을 알림
MAC Dst/Src : 수신지 송신지 물리주소
EtherType : 데이터에 내제된 IP 타입 식별
Payload : 전달받은 데이터
CRC : 에러 확인 비트


# 계층간 데이터 송수신 과정

- 두 컴퓨터가 데이터를 주고 받는다면..?
컴퓨터1 데이터 보냄 → 애플리케이션&전송 계층으로 캡슐화 과정을 거침 → 링크 계층을 통해 컴퓨터2의 서버와 통신 → 컴퓨터2 링크~애플리케이션 계층까지 비캡슐화 과정을 거쳐 데이터가 전송

- 캡슐화 과정
상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정...?
즉, 상위에서 하위 계층으로 이동하면서, 현재 계층에 이전 계층의 헤더&데이터를 포함시키는 것! 마지막 링크 계층에는 모든 헤더와 데이터가 전달되고 프레임 헤더와 트레일러가 붙어 '프레임화' 됨

- 비캡슐화 과정
캡슐화된 데이터가 하위 계층에서 상위 계층으로 이동하면서 각 계층에 맞는 헤더 부분을 제거하는 과정, 그렇담 마지막에는 애플리케이션의 PDU인 메시지로 전달이 됨

전송->캡슐화(프레임 생성)->비캡슐화(메시지만 남겨둠)->도착


# PDU(Protocol Data Unit)
네트워크의 계층 간에 데이터가 전달될 때 한 덩어리의 단위
- 제어 관련 정보들이 포함된 '헤더' & 데이터를 의미하는 '페이로드'로 구성

데이터 자체는 동일하지만 계층마다 부르는 명칭이 다름
- 애플리케이션 계층 : 메세지
- 전송 계층 : 세그먼트(TCP) or 데이터그램(UDP)
- 인터넷 계층 : 패킷
- 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)

profile
코딩하는 무민

0개의 댓글