인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합. -> 이것을 TCP/IP 4계층 모델로 설명하거나, OSI 7계층 모델로 설명하기도 함.
계층 구조
두 모델의 차이는 위와 같지만, 우리는 TCP/IP 4계층 모델을 중심으로 본다.
이 계층 구조는, 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계됨.
각 계층을 대표하는 스택 정리 (TCP/IP 4계층)
애플리케이션 계층
FTP / HTTP / SSH / SMTP / DNS
전송 계층
TCP / UDP / QUIC
인터넷 계층
IP / ARP / ICMP
링크 계층
이더넷
애플리케이션 계층
FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층. (웹 서비스, 이메일 등... 서비스를 실질적으로 사람들에게 제공하는 층)
개념 정리
FTP - 장치와 장치 간 파일 전송시 사용되는 표준 통신 프로토콜
SSH - 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
HTTP - World Wide Web을 위한 데이터 통신의 기초이자, 웹 사이트를 이용하는 데 쓰는 프로토콜
SMTP - 전자 메일 발송을 위한 인터넷 표준 통신 프로토콜
DNS - 도메인 이름과 IP 주소를 매핑해주는 서버. - 예를 들어, www.naver.com에 DNS 쿼리가 오면, [Root DNS] → [.com DNS] → [.naver DNS] → [.www DNS] 과정을 거쳐서 완벽한 주소를 찾아 IP 주소를 매핑한다. - 이를 통해 IP 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스할 수 있다.
전송 계층
송신자와 수신자를 연결하는 통신 서비스를 제공. 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공. 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 함.
대표적으로 TCP, UDP가 있다.
TCP
1. 패킷 사이의 순서 보장 2. 연결지향 프로토콜을 사용해서 연결, 신뢰성을 구축해서 수신 여부를 확인함 3. '가상회선 패킷 교환 방식' 사용
UDP
1. 패킷 순서 보장하지 않음 2. 수신 여부 확인하지 않음 3. 단순히 데이터만 주는 '데이터그램 패킷 교환 방식' 사용
가상회선 패킷 교환 방식 각 패킷에는 가상회선 식별자가 포함됨. 모든 패킷을 전송하면 가상회선이 해제되고, 패킷들은 전송된 순서대로 도착함.
데이터그램 패킷 교환 방식 패킷이 독립적으로 최적의 경로를 선택해서 이동함. 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음. 즉, 도착한 순서가 다를 수 있음.
TCP 연결 성립 과정 TCP는 신뢰성을 확보할 때 '3-웨이 핸드셰이크'라는 작업을 진행함.
1. SYN 단계: 클라이언트는 서버의 클라이언트에 ISN을 담아 SYN을 보냄. (ISN: 첫 패킷에 할당된 임의의 시퀀스 번호) 2. SYN + ACK 단계: 서버는 클라이언트의 SYN 수신, 승인번호로 클라이언트의 ISN + 1을 보냄. 3. ACK 단계: 클라이언트는 승인번호를 담아 ACK를 서버에 보냄.
TCP 연결 해제 과정 '4-웨이 핸드셰이크' 과정 발생.
1. FIN으로 설정된 세그먼트 전송. 클라이언트는 FIN_WAIT_1 상태로 진입, 서버 응답을 기다림.
2. 서버는 ACK라는 승인 세그먼트를 클라이언트에 전송. 그리고 CLOSE_WAIT 상태로 진입. 클라이언트는 세그먼트 받으면 FIN_WAIT_2 상태 진입.
3. 서버는 ACK 전송하고 일정시간 후, 클라이언트에 FIN이라는 세그먼트 전송.
4. 클라이언트는 TIME_WAIT 상태 됨. 다시 서버로 ACK를 보내서 서버는 CLOSED 상태 됨. 이후, 클라이언트는 일정 시간 대기 후 연결 닫히고, 모든 자원의 연결이 해제됨.
❓왜 일정 시간 후에 닫나요? (TIME_WAIT) - 지연 패킷이 발생할 경우를 대비하기 위함. (이를 처리하지 못하면, 데이터 무결성 문제 발생.)
- 두 장치가 연결이 닫혔는지 확인하기 위함.
인터넷 계층
장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층. 패킷을 수신해야 할 상대의 주소를 지정해서 데이터 전달. 상대방이 제대로 받았는지는 보장하지 않는, 비연결형적인 특징.
링크 계층
전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달. 장치 간 신호를 주고받는 규칙을 정하는 계층. (네트워크 접근 계층이라고도 함)
물리 계층, 데이터 링크 계층으로 나누기도 함.
물리 계층
무선 LAN, 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
데이터 링크 계층
'이더넷 프레임'을 통해 에러 확인, 흐름 제어, 접근 제어를 담당하는 계층
유선 LAN(IEEE802.3)
유선 LAN을 이루는 이더넷은 IEEE802.3이라는 프로토콜을 따르고, 전이중화 통신을 씀.
전이중화 통신 양쪽 장치가 동시에 송수신할 수 있는 방식. 송신로/수신로로 나눠서 데이터 주고받음.
CSMA/CD 이전에는 유선 LAN에 '반이중화 통신' 중 하나인 CSMA/CD 방식을 사용함. 데이터를 보낸 이후 충돌 발생시, 일정 시간 이후 재전송하는 방식. 수신로/송신로가 각각 있는 게 아니라, 한 경로를 기반으로 데이터를 보내기 때문에 충돌에 대비해야 했으므로...
유선 LAN을 이루는 케이블
TP 케이블이라고 하는 트위스트 페어 케이블, 광섬유 케이블이 대표적.
트위스트 페어 케이블 하나의 케이블처럼 보이지만, 실제로는 여덟 개의 구리선을 두 개씩 꼬아서 묶은 케이블. (선 벗기면 구리선 많은 그거^^)
광섬유 케이블
광섬유로 만든 케이블. 레이저를 이용해서 통신하므로, 구리선과는 비교 불가하게 빠르고, 장거리 통신도 가능!
보통 100Gbps의 데이터를 전송.
광섬유 내/외부를 다른 밀도를 가지는 유리나 플라스틱 섬유로 제작해서, 한 번 들어간 빛이 내부에서 계속 반사되면서 전진하도록 함.
코어(core): 빛의 굴절률 높은 부분
클래딩(cladding): 낮은 부분
무선 LAN(IEEE802.11)
무선 LAN 장치는 수/송신에 같은 채널을 사용하므로, 반이중화 통신을 사용함. (아까는 전이중화 통신)
반이중화 통신 양쪽 장치는 서로 통신 가능 BUT 동시에는 통신할 수 없고, 한 번에 한 방향만 통신 가능한 방식.
CSMA/CA 반이중화 통신 중 하나. 장치에서 데이터를 보내기 전에, 사전에 충돌을 최대한 방지하는 방식.
<과정> 1. 사용 중인 채널이 있다면, 다른 채널을 감지하다가 유후 상태인 채널을 발견. 2. 프레임 간 공간 시간인 IFS 시간만큼 기다림. IFS는 프레임의 우선순위를 정의할 때도 사용되는데, 이게 낮으면 우선순위는 높음. 3. 프레임을 보내기 전, 0 ~ 2^k-1 사이에서 결정된 랜덤 상수를 기반으로 결정된 시간만큼 기다린 뒤 프레임을 보냄. 이후 제대로 송신이 되었고 ACK 세그먼트를 받았다면 마침. 반면, 받지 못했다면, k = k+1을 하며 과정을 반복함. 반복하다가 k가 정해진 Kmax보다 커진다면 해당 프레임 전송은 버림.
-> 전이중화 통신의 경우 양방향 통신이 가능하므로, 즉, 충돌 가능성이 없으므로 충돌 감지나 방지 매커니즘이 불필요.
무선 LAN을 이루는 주파수
무선 신호 전달 방식을 이용하여, 2대 이상의 장치를 연결하는 기술
주파수 대역은 2.4GHz 대역 또는 5GHz 대역 중 하나로 구축. 5GHz 대역은 사용 가능한 채널 수도 많고, 동시에 사용할 수 있으므로 상대적으로 깨끗한 전파 환경 구축 가능.
와이파이 전자기기들이 무선 LAN 신호에 연결할 수 있게 하는 기술. 무선 접속 장치(AP) 필요함->흔히 공유기라고 함. AP를 통해, 유선 LAN에 흐르는 신호를 무선 LAN 신호로 변환함.
BSS (Basic Service Set) 기본 서비스 집합 단순 공유기를 통해 네트워크에 접속하는 게 아니라, 동일 BSS 내에 있는 AP들과 장치들이 서로 통신 가능한 구조. 근거리 무선 통신 제공, 하나의 AP만을 기반으로 구축 -> 사용자가 이동하면서 네트워크에 접속하기는 불가능
ESS (Extended Service Set) 하나 이상 연결된 BSS 그룹 장거리 무선 통신 제공 -> BSS보다 가용성과 이동성 뛰어남
이더넷 프레임
데이터 링크 계층은, 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화함.
구조
Preamble
이더넷 프레임의 시작 알림
SFD
다음 바이트부터 MAC 주소 필드가 시작됨 알림
DMAC, SMAC
수신, 송신 MAC 주소
EtherType
데이터 계층 위의 계층인 IP 프로토콜 정의 (예: IPv4 or IPv6)
Payload
전달받은 데이터
CRC
에러 확인 비트
계층 간 데이터 송수신 과정
캡슐화 과정
상위 계층의 헤더/데이터를 하위 계층의 데이터 부분에 포함시키고, 해당 계층의 헤더를 삽입하는 과정.
비캡슐화 과정
하위 계층 -> 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정.
캡슐화, 비캡슐화 과정을 거쳐 최종적으로 사용자에게 애플리케이션의 PDU인 메시지로 전달됨.
PDU
네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때, 한 덩어리의 단위를 PDU(Protocol Data Unit)라고 함.
PDU는 제어 관련 정보들이 포함된 헤더, 데이터를 의미하는 페이로드로 구성. 계층마다 부르는 명칭이 다르다.
- 애플리케이션 계층: 메시지 - 전송 계층: 세그먼트(TCP), 데이털그램(UDP) - 인터넷 계층: 패킷 - 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)