본문 바로가기
학교 강의/정보통신공학

Chapter2. Protocol Architecture, TCP/IP, and Internet-Based Applications

by dustnn 2025. 3. 23.

L3,4,5 관련 얘기 나옴 - 깊은 얘기들은 몰라도 되지만 짤막하게 암기해야할 것은 암기하기

 

What is Protocol?

 

"A protocol is a set of rules or conventions that allow two functions at the same layer to communicate exchange control information in header"

In other words, a protocol is to define format and order of message(PDU)&action(무슨 상황에는 무엇을 한다)

 

Protocol: 서로 다른 end user들끼리 소통할 때, 각 user의 같은 계층끼리 소통하는 규약.

규약에는 message나 action의 형식 또는 순서가 포함됨.

소통은 메시지에 추가되는 header로 함.

* message의 기본 단위: PDU(protocol data unit)

* PDU=header+payload(message 내용)

ex. HTTP의 PDU: client와 server 안의 HTTP에 들어있는 header&payload

 

* header 내용

: version 정보

ex. IPv4인지 IPv6인지..

=> 비트 수를 늘릴 수는 없기 때문에 신중하게 정해야 함

: message type

ex. 000: query msg, 001: response msg 등등 정의해 놓아야 함

=> 송신자와 수신자 간 원활한 소통을 위함

: message order

=> 000을 받으면 server는 자신이 가지고 있는지 살펴보고 그에 맞는 메시지로 답장

 

 

protocol의 주요 특징

 

- syntax: 데이터의 format

- semantics: coordination과 error handling의 control

- timing: speed matching & sequencing(순서) 정보

 

The Need For Protocol Architecture

 

data 전송을 위해서 해야 할 일들

 

1. The source must activate communications path or inform network of destination

통신을 시작한 host(source)는 자신이 누구랑 통신하고 싶은지(destination) 명시해야 함

=> source가 명시한 정보를 가지고 destination으로 가고,

destination에서 답장할 때 source가 적어 놓은 자신의 주소를 찾아 전달 가능

 

2. The source must make sure that destination is prepared to receive data

예컨대

- TCP는 connection을 해야 하지만, destination이 준비가 안 된 상태라면 connection 자체가 수행되기 어려움

- UDP는 connection을 안 하므로 destination에게 보내지기는 하지만 다 왔을 때 전달되지 못함

 

3. The file transfer application on source must confirm file management program at destination is prepared to accept and store file

 

 

4. A format translation function may need to be performed if the formats on systems are different

: 형식이 다르면 형식을 다르게 해석할 수 있음

 

 

Protocol Architecture

 

<Layered structure>

: 시스템 간 데이터 송수신을 위한 hw나 sw의 계층 구조

: 모듈로 나누어 역할 분담

 

L2는 독립적으로 NIC card에 존재 -> 따로 뽑아 쓸 수 있음

L3,4는 OS에 포함 -> OS를 산다는 것은 IP/TCP/UDP를 산다는 것

L5는 자유롭게 설치(앱)

=> 각 계층은 별도로 동작.(ex. L2를 바꾸고싶다고 해서 OS를 바꿀 필요 없음)

 

 

<vertical stack>

- 모듈은 수직적 모양의 스택에 정렬되어 있음 -> 각 layer은 모듈 여러개, 즉 여러 기능의 집합

- (중요) 각 layer들은 순차적으로 연결돼있기 때문에 바로 밑/위 계층하고만 교류

"relies on next lower layer for primitive functions"

"provides services to the next higher layer"

ex. L3는 L2,4하고만 교류

 

- 한 계층이 변했다고 다른 계층에서도 변화가 요구되면 안 됨

 

OSI(Open Systems Interconnection) vs. TCP/IP Reference Model

 

Reference model: 인터넷 장비를 만들고 싶을 때, 그 장비가 해당하는 계층의 프로토콜 참조하라는 뜻

<상위 계층은 하위계층에게 의존>

: 상위계층은 하위계층의 service user, 하위계층은 상위계층의 service provider

=> 각 계층의 프로토콜(IP/TCP/HTTP)은 service provider가 되기도, receiver가 되기도

 

http protocol: 클라이언트 웹의 http와 서버의 http 사이의 규칙

* 서버가 준 패킷을 클라이언트에게 어떻게 보여줄건지에 대한 내용만 담고 있음

* 그 이외의 것은 아래 계층으로부터 지원받음(-> reliability)

ex. 클라이언트 웹의 http는 찾고 있는 서버 프로세서가 어디 있는지 모름 -> TCP가 대신 찾아서 HTTP로 올려줌

ex. TCP는 프로세서의 포트 번호는 찾아주지만 직접 가는 건 못함 -> IP가 대신 routing(해당 서버로 가져다줌)

 

 

 

 

L4와 L5 사이의 인터페이스에는 socket이 있음(각 프로토콜에 연결되는 port 번호 지정)

ex. L3 프로토콜에는 TCP/UDP 등이 있음 -> 각 종류별로 socket을 둠.

 

Physical Layer(L1)

 

1. link capacity=link bandwidth=transmission rate

2. reliability~error rate

3. cost

4. transmission distance without attenuation(감소 없이 전송 가능한 거리)

5. data rate <=1

* link는 중간에 많은 변수가 있음

 

Data Link Layer(L2)

 

주 역할: 1-hop delivery

 

 

<L2&L3는 보는 주소의 범위가 다름>

L2: 바로 옆 주소까지(다음 hop까지 보내는 역할)

L3: destination 주소까지(최종 destination까지 가는 길 routing) 

 

한 hop 안에 있는 L2 protocol은 모두 같은 종류의 프로토콜 사용.

다음 라우터의 주소를 L2계층에 적어둠.(=L2는 하나의 hop을 지나가는 일을 함=하나의 subnet을 지나간다)

* 1 hop = 같은 subnet

ex. Ethernet & Wifi 프로토콜: MAC 주소 씀

<=> 다른 hop에서는 다른 프로토콜일 수 있음

packet switching은 various data rate 지원하므로,

L3 밑 계층의 기술은 다르지만 L3 위 통일(IP/TCP/HTTP?)해놨기 때문에 연동이 됨

(인터넷이 유명해진 이유)

 

Network Layer(L3)-host to host

 

아까 IP는 TCP를 위해 데이터를 전달하는 역할 한다고 했어.. "routing"

 

주 역할: routing

특히 IP는 forwarding & routing 기능

 

- Network layer에서는 IP module이 가장 핵심

* routing하는 모듈, forwarding하는 모듈이 따로 있음

- routing: router들끼리 정보를 주고받는 것

- forwarding: 데이터가 포트로 들어왔을 때 하드웨어적으로 일어남

 

* router: 두 개의 네트워크 연결하여 데이터 전송

=> 하나의 네트워크는 하나의 router로 연결돼있으므로 router 하나밖에 없으면 다 같은 네트워크

 

end system에 IP는 있지만, routing protocol은 없음

-> 내가 속한 LAN의 마지막 라우터에게 보내면 됨(마지막 라우터의 address만 알면 됨)

-> 마지막 라우터에게는 IP 프로토콜이 있기 때문에 라우터가 알아서 forwarding해줌

 

 

Transport Layer(L4)

 

주 역할: finding the upper-layer process(프로세스 찾아주기) -> L3 시켜 전달한 다음 받은 것을 L5로 전달

 

서로 소통하는 end system들은 서로 같은 프로토콜 종류를 쓰고 있어야 함

ex. TCP-TCP(o) UDP-UDP(o) TCP-UDP(x)

 

<TCP>

- Error detection & correction(-> reliable end-to-end delivery)

- Ordering

 

<UDP>

- Error detection만 !!

 

  TCP UDP
Error detection o o
Error correction o x
Ordering o x

 

Application Layer(L5)

 

주 역할: user가 어떤 식으로 인터넷에 로그인하는지에 따라 쓰는 프로토콜이 다름

 

<전통적 application protocol>: loss에 민감할 때(throughput&bandwidth는 잘 못 잡아줌)

- SMTP(Simple Mail Transfer Protocol)

: 독립된 host 사이에서 message를 전달하는 기술

 

- FTP(File Transfer Protocol)

: 텍스트/바이너리 파일 전달할 때

 

- SSH(Secure Shell)

: 안전한 전달 지원

 

<VoIP>: multimedia 지원

- Compression: JPG for still images, MPG for video

- Communications/networking: high volume network traffic 요구하는 기술

- protocols: RTP, SIP

- QoS(Quality of Service): priority, delay variability constraints 등..

 

 

Two-level addressing

 

addressing의 두 단계

- IP address

- port

우편을 보내기 위해서는 집주소와 받는 사람 이름이 있듯,

addressing을 위해서는 IP 주소와 port번호가 있어야 한다.

 

IP address(집주소): globally unique한 유료 주소

- 각 host들은 하나 이상의 IP address 가지고 있어야 함

- NIC card 두 군데 이상 연결돼 있으면 IP address 두 개 이상 가지고 있다는 것.(들어가는 곳이 두 곳 이상)

- router가 제대로 된 host로 찾아가게 함

- router은 당연히 두 개 이상

- IP(L3) header에 들어감

 

port(사람 이름): host 내에서(만 해도 ㄱㅊ) unique한 주소

- 16bit

- 잘 알려진 server의 port #는 정해져 있음 -> OS가 건드릴 수 없음

- client가 running할 때 할당, off일 때 뺏어서 다른 client에게 줌

=> 때문에 당연히 client가 well-known server의 port#를 찾아가 먼저 시작

- TCP/UDP가 제대로 된 process로 찾아가게 함

- transport(L4) header에 들어감

 

 

 

TCP/IP Protocol Architecture

 

70년대

Result of protocol research and development conducted on ARPANET

INCP

 

80년대

Referred to as TCP/IP protocol suite

NSFnet (National Science Foundation) - 연구비 주는 기관

 

90년대: 상용화되기 시작

TCP/IP comprises a large collection of protocols that are internet standards

 

 

Example Protocols in TCP/IP suite

 

 

- BGP는 TCP를, RIP는 UDP를 call한다.

(여기서 주의!) router는 최대 L3까지 있다고 했으면서 router 내에 왜 L4,5가 있고 TCP, UDP 등의 프로토콜을 쓰고 있을까?

* routing module: L4,5 사용 => routing할 때는 이 모듈 사용

* forwarding module: L4,5 안 씀 => end to end data transfer 시나리오에서는 얘만 보기 때문에 L4,5 없다고 느낌

 

- ARP(2.5계층): L2, L3 매개 역할

 

- ICMP(Internet Connect Management Protocol): 무슨 문제가 생겼는지 송신자에게 알려줌

* IP는 connectionless, stateless -> ICMP를 통해 조금의 reliability 제공받음

(-> best-effort.. 결과는 보장 못하지만 최선을 다 한다.)

ex. packet이 가다가 문제가 생기면 해결은 못 하더라도 sender에게 알려줌

 

- OSPF

router은 항상 켜져 일하고 있음

IP 모듈의 control하는 모듈에서 routing protocol(ICMP/OSPF/RSVP)

 

- HTTP

TCP쪽: 속도 조정해서 모두의 속도 조정 -> 무조건 안전하게 보내는 것에 초점

UDP쪽: 일단 지정한 속도로 나감 -> 안전하게 도착할지 안 할지는 운에 맡김(네트워크 등 상황이 좋으면 지정한 대로, 안 좋으면 loss 발생)

 

Operation of TCP&IP

 

 

 

Protocol Data Unit(PDU)

 

: 각각의 프로토콜이 핸들링하는 데이터의 단위

 

Payload: router가 열어보면 안 됨

Header: 

 

<PDUs in TCP/IP>

 

circuit switching과 반대로 packet switching은 PDU로 쪼개서 보내기 때문에 다음 그림처럼 bit overhead 발생

똑같은 일을 overhead를 최소로 하며 수행하는 것이 효율적.(link 입장에서는 overhead 부분은 진짜 데이터가 아니기 때문)

 

L4의 TCP

 

: routing protocol들이 주고받는 TCP가 아니라 user의 관점에서 바라보는 TCP라고 생각해야.

 

- connection-oriented protocol

-> 두 host 간 일시적인 logical association 지원

-> reliable connection 지원

 

- TCP의 segment는 header에 port#를 포함

-> user 구별

-> TCP connection이란 port 간 연결을 말함

 

<목적>

1. in-order & no-loss delivery

-> lost/damaged segment들을 복구하기 위해서

 

2. To regulate the flow of segments

-> receiver의 buffer overflow를 막기 위해서(connection을 통해 sending rate 등 조절)

 

3. To control network congestion

-> 자신이 쓸 수 있는 time slot을 모르기 때문에 output buffer overflow를 막기 위해서(까보면 1 user full-rate 일 수도)

* packet switching의 input buffer에서는 congestion 없지만

output buffer에서는 congestion 존재

 

<TCP vs UDP>

 

  UDP TCP
guarantee of delivery x o
preservation of sequence x o
protection against duplication x
* 답장을 보고 그제서야 문제 발생을 알게 됨
(똑같은 게 와도 checksum header가 없어 이전 정보를 가지고 있지 않기 때문에 버려야 하는지 판단을 못함)
o
overhead header의 기능 적음
* error detection만 수행
correction은 안 함!!
3가지 기능 모두 수행
port addressing host의 프로세스 찾는 IP에 추가 x
종류 - SNMP(Simple)
- DNS(Domain Name System)
- HTTP(real-time streaming service):
짧기 때문에 응답 없거나 순서 바뀌면 또 보내면 됨
- Smart applications
: HTTP v3만 해당(HTTP 안에 HTTP 전용 TCP를 넣어버림)
생략

 

 

TCP와 UDP 모두 checksum 가지고 있지만 각각 checksum의 기능이 다르다.

 

TCP UDP
reliable service flow control

 

IPv4 vs IPv6

 

 

IPv6는 header가 더 크지만 parameter(header field)은 IPv4보다 적기 때문에 하는 일이 많은 건 아님

단지 주소공간이 늘어났을 뿐 !!

 

IPv4

- data 부분(payload)은 error detection에서 제외! (내용 까보지 못하므로 당연..)

- header부분의 error만 탐색(header checksum)

 

IPv6

- 할당할 수 있는 주소가 없기 때문에 address 부분 128bit로 늘림

- No checksum(link의 error rate이 줄어든 상위 버전이므로) & No fragmentation

=> 속도 빨라짐

- QoS(flow label) 추가했지만 graphic, video 데이터 혼용으로 인해 실패..