Hello It's good to be back ^_^

[정보통신공학] ch2 프로토콜의 구조, TCP/IP 및 인터넷 기반 애플리케이션 본문

Study/정보통신공학

[정보통신공학] ch2 프로토콜의 구조, TCP/IP 및 인터넷 기반 애플리케이션

HongyeonLee 2026. 4. 10. 03:31

학습 목표

1. 프로토콜 구조의 정의와 통신 구조에서의 그 필요성과 이득

  • 프로토콜: 통신을 원하는 두 개체간의 '무엇을, 어떻께, 언제' 통신할 것인지 규정한 상호 협의된 규약
  • 단순 데이터 전송만 하는 것이 아니라 전송 제어, 에러 검출, 흐름 제어등을 수행함
  • 따라서 이를 거대한 하나의 프로그램으로 만들면 유지 보수가 불가능하기에 프로토콜 구조로 만들어서 관리함
  • 계층화 : 복잡한 통신 기능을 독립적인 하위 기능들의 집합으로 나누어 수직적을 쌓아 올린 구조
  • 모듈화의 이점: 특정 계층의 기술이 발전/변경해도 인접 계층에 영향을 주지 않고 해당 계층만 수정하면 됨

2. TCP/IP 구조와 계층별 기능

  • 네트워크 엑세스 계층 (Network Access Layer): 물리적인 매체(케이블, 광섬유, 공기)등을 통한 인접 노드간의 데이터 프레임을 전달하는 물리적인 인터페이스 담당
  • 네트워크 계층 (Network Layer): 데이터 패킷이 최종 목적지까지 도달할 수 있도록 IP 주소를 기반으로 라우팅 경로 설정
  • 전송 계층 (Transport Layer): 종단 간 (End-to-End)의 신뢰성 있는 데이터 전송 보장, 데이터가 순서대로 도착했는지, 손실은 없는 지 확인하는 TCP와 UDP
  • 응용 계층 (Application Layer): 사용자가 사용하는 서비스 (HTTP, FTP, SMTP)등을 지원하기 위한 통신 기능 제공

3. 표준 구조(Standardized Architencture) vs. 독점 구조(Proprietary)

- 과거에는 특정 제조사(IBM, DEC)가 자신들의 장비끼리만 통신할 수 있도록 만든 독점 구조를 사용 → 현재는 표준화된 구조

  • 표준화의 동기: 서로 다른 제조사 장비 간의 Interoperability를 확보하기 위함
  • 고객의 이점
    • 1. Vendor Lock-in 방지: 특정 제조사에 종속x, 다양한 제품 선택 가능
    • 2. 비용 절감: 대량 생산과 경쟁을 통한 장비 가격 하락
    • 3. 안정성: 전 세계 공학자들이 검증한 규격, 신뢰도 높음

4. 인터네트워킹(Internetworking)의 필요성

  • 단일 네트워크만으로는 전 세계의 모든 장치 연결 불가
  • 인터네트워킹은 서로 다른 기술 (ex) 이더넷, Wi-Fi, 5G)을 사용하는 개별 네트워크들을 라우터와 같은 중계 장치 하나로 묶어 거대한 네트워크의 네트워크 즉, 인터넷을 구성하는 기술임
  • 서로 다른 네트워크 환경에서도 데이터가 끊김 없이 흐를 수 있도록 공통의 '언어'를 제공함

 

통신이 성립하기 위한 최소 조건 정의

1. 프로토콜의 필요성

1. 알파벳의 부재: 물리적 및 비트 수준의 불일치 (Physical, Bit level)

  • 전압의 높낮이, 빛의 유무, 전자기파의 위상 변화 등을 어떻게 0과 1로 해석할 것인가
  • 송신기는 5V를 '1'로 정의해 보냈는데 수신시가 10V이상만 '1'로 해석한다면?
  • 송신기는 광신호를 쏘는데 수신기는 전기 신홈나 기다린다면?
  • 데이터의 최소 단위인 비트도 형성되지 못함

2. 구문의 부재: 구조적 불일치

- 알파벳을 서로 이해한다고 해도, 그 비트들을 어떻게 조합하여 의미 있는 덩어리로 만들 것인지에 대한 규칙이 없다면 통신이 불가능

  • 데이터 패킷의 형식을 의미한다. 어디부터가 주소(Address)이고 어디서부터가 실제 데이터(Payload)이며 에러 검출 코드는 어디에 위치하는지에 대한 규칙
  • 송신기는 패킷의 앞부분 32비트를 주소라고 생각하고 전송했으나 수신기는 앞부분 16비트만을 주소로 해석하면 데이터 전체가 오염됨

→ 프로토콜이 있어야지 서로 다른 제조사가 만든 장비들이 수천 킬로미터 떨어져 있어도 소통할 수 있음

→ 그 프로토콜이 바로 TCP/IP임

→ 기업이 만약 독자적인 규칙을 고집했다면 통신은 완전히 파괴되었을 것

 

2. 프로토콜의 정의

  • 프로토콜은 동일 계층 간의 통신을 허락하는 규약의 집합을 의미한다
    • 데이터는 물리적인 선을 타고 흐르지만, 논리적으로 송신측의 전송 계층은 수신 측의 전송 계층과 직접 대화하는 것처럼 작용, 이를 Peer Entity(피어 개체)간의 전송이라고 함
  • 다른 말로 하자면, 프로토콜은 메세지의 형식과 순서 그리고 동작을 정의하는 것이다
    • 어떤 데이터를 먼저 보낼지, 그 데이터의 생김새는 어떠해야 하는지 규정한다
    • 특정 메세지를 받았을 때 시스템이 어떤 반응(데이터 저장, 응답 전송, 재전송 등)을 해야하는지에 대해 규정한다
  • 프로토콜의 3대 요소
    • 1. 구문 Syntanx
      • 데이터의 형태를 의미한다
      • ex) 패킷의 첫 8비트는 송신자 주소, 다음 8비트는 수신자 주소, 그 다음 16비트는 데이터 본문이라고 정하는 것을 구문 설정이라고 한다
    • 2. 의미 Semantics
      • 데이터의 내용에 대한 해석과 제어 정보를 의미한다
      • 비트 패턴의 각 섹션이 무엇을 뜻하는지, 그리고 그에 따라 무슨 동작을 수행해야 하는지를 규정한다
      • 협업(Coordination): 연결을 시작할 것인가 끊을 것인가
      • 오류 제어(Error Handdling): 데이터가 깨졌을 때 어떻게 처리할 것인지
    • 3. 타이밍 (Timinng)
      • 데이터 전송의 속도와 순서를 의미한다
      • 속도 조절 (Speed Matching): 아주 빠른 송신기가 느린 수신기의 처리 용량을 초과하여 데이터를 보내지 못하도록 제어하는 Flow Control 기능 등
      • 순서 제어 (Sequencing): 패킷 A가 패킷 B보다 먼저 도착해야 하거나, 뒤바뀌어 도착했을 때 어떻게 재조합할지 결정 한다

3. 프로토콜 구조에 대한 필요성

통신을 위해 수행되어야 하는 핵심 작업들

  • 1) Source는 경로 활성화 및 목적지 알림 (activate cummunications path / inform network of destination)
    • 데이터를 보내기 전 물리적인 연결(Physical Link)를 확보하거나 네트워크 장비(라우터 등)에 목적지 주소 정보를 제공
    • 전기 신호/HW적 작업
  • 2) Source는 수신노드가 데이터 수신 가능한지 확인 (Destination is prepared)
    • 목적지 시스템이 현재 켜져 있는지, 통신을 받아들일 수 있는 상태인지 확인
    • 핸드셰이킹: 데이터를 바로 보내는게 아니라 보낼게 → ok 준비됨 같은 상호 확인 절차를 통해 자원 낭비 방지
  • 3) 응용 프로그램 간의 협력 (src의 파일 전송 애플리케이션은 dst의 파일 관리 프로그램이 파일을 받아들이고 저장할 준비가 되어있는지 반드시 확인)
    • 데이터를 보내는 쪽의 파일 전송 프로그램과 받는 쪽의 파일 저장 프로그램이 서로 대화할 수 있어야 함
    • Entity(엔티티) 간의 통신: 수신 측의 컴퓨터에 저장 공간이 충분한지, 해당 파일을 다룰 수 있는 권한이 있는 지 확인
    • S/W 및 데이터 논리적 구조
  • 4) 포맷 변환
    • 시스템 간의 포맷이 다르다면 포맷 변환 기능이 수행될 수도 있다
    • 서로 다른 운영체제나 하드웨어 아키텍쳐 간의 데이터 표현 방식(엔디언, 문자 인코딩 등) 차이를 극복하는 것
    • 인텔(OS)은 little endian을 사용하고 네트워크는 Big endian을 사용함 변환 필요
    • 표현: 송신자가 보낸 'A'라는 데이터가 수진자에게도 정확히 'A'로 해석되도록 규격을 맞추는 과정
      • S/W 및 데이터 논리적 구조

왜 구조가 필요한가?

→ 이 모든 기능을 하나의 코드 덩어리로 만든다면 (Monolithic program)

  • 유지보수의 재앙: 전선 종류(광섬유 → 5G)만 달라져도 파일 전송 프로그램 전체를 새로 짜야함
  • 복잡도 제어 불능: 한 부분의 에러가 전체 시스템을 마비 시킴

계층화의 논리

  • 이러한 문제를 해결하기 위해 분할 정복 전략 이용 
  • 하위 계층: 물리적 연결과 경로 확보에 집중 (1번, 2번 작업)
  • 상위 계층: 데이터의 의미와 응용 서비비스에 집중 (3번, 4번 작업)

→ 이렇게 기능을 분리하여 쌓아 올린 것이 프로토콜 구조 (Protocol Architecture)

→ 상위 계층 (응용 프로그램)은 데이터가 광케이블로 가는지, 위성으로 가는지 신경 쓰지 않고 오로지 파일을 안전하게 보낸다는 목적에만 집중해서 보낼 수 있음

 

4. 프로토콜 구조

  • 1. 계층적 구조 (Layered protocol stack)
    • 네트워크는 단순 선을 연결한 것이 아니라 하드웨어(NIC, 라우터)와 소프트웨어 (OS 커널, 드라이버, 응용 프로그램)가 결합한 거대한 시스템
    • 이러한 복잡성을 관리하기 위해 수직적 스택 구조 선택
    • 독립적 모듈화 (Independent Substack):  전체 통신 과정을 작은 단위의 서브태스크(Subtask)로 쪼개고, 각 모듈을 독립적으로 구현
    • 추상화 (Abstraction): 상위 계층은 하위 계층이 어떻게 내부적으로 작동하는지 몰라도 됨. 오직 제공되는 서비스만 이용할뿐
  • 2. 모듈은 수직적 스택 구조로 놓여 있다
    • ① 하위 계층에 대한 의존 (Relies on next lower layer):
      • 모든 계층은 자신의 바로 아래 계층이 제공하는 기초적인 기능 (Primitive functions)를 기반으로 작동
      • ex) Transport layer(L3)는 Network layer(L2)가 패킷을 목적지까지 보내줄 것이라 믿고 데이터를 넘김
    • ② 상위 계층으로의 서비스 제공 (Provides servies to next higher layer) 
      • 각 계층은 하위 계층으로부터 받은 기능을 가공하여 더 고차원적인 기능을 상위 계층에 제공
      • ex) Physical layer(L1)이 비트(0, 1)를 전달하면 Data link layer(L2)가 이를 묶어서 프레임(Frame)이라는 서비슬르 상위 계층에 제공함
    • ③ 계층 간의 독립성 (Independence)
      • 특정 계층의 변화가 다른 계층의 변화를 강제해서는 안됨
      • ex) 인터넷 연결 방식을 LAN선(Ethernet)에서 Wi-Fi로 바꾸었다고 해서 웹 브라우저(크롬)이나 메신저(카카오톡) 프로그램을 재설치할 필요 없음.
      • 하위 계층의 교체가 상위 계층의 로직을 파괴하지 않음
    • ④ 대표 모델 TCP/IP vs. OSI
      • 이 원칙들을 실제로 구현한 표준 규격 2가지
      • OSI 7 layer 모델: 이론적으로 완벽하게 기능을 분리해 놓을 참조 모델(Reference Model)임
      • TCP/IP 프로토콜 스택: 이론보다는 실용성에 초점을 맞추어 현재 인터넷에 실제로 사용되는 사실상의 표준

* 수평적 구조는 왜 안되는가? → 모든 모듈이 서로 연결되어야 하므로 복잡도가 N^2가 됨

* 수직적 구조는 오직 자신의 위아래 계층하고만 소통하면 됨

 

5. OSI (Open System Interconnection) vs. TCP/IP Refrence Model

OSI 7 Layer Model

  • 국제표준화기구(ISO)에서 만든 모델
  • 통신 과정을 7개의 아주 세밀한 단계로 나눔
  • 참조 모델로서의 가치가 큼. 네트워크는 이렇게 생겨야 한다 제시

TCP/IP Model

  • 인터넷의 전신인 APPANET 시절부터 발전해 온 모델
  • 이론 보다는 구현 (Implementation)에 초점
  • 현재 우리가 사용하는 모든 인터넷 기술의 사실상 표준 (De facto standard)

Updated TCP/IP

① Application Layer (응용 계층)

  • OSI의 상위 3계층 (Application, Presentation, Session)을 하나로 합침
  • 실제 소프트웨어를 개발할 때, 데이터 암호화(Presentation), 세션 관리(Session)하는 기능을 굳이 별도의 하위 시스템 (OS 커널 등)에서 처리할 필요가 없다고 판단
  • 응용 프로그램 (브라우저, 게임 등) 내부에서 한번엔 처리하는 것이 더 효율적임

② Transport Layer (전송 계층)

  • 프로세스 간의 통신을 담당
  • 데이터가 깨지지 않고 잘 전달되는지 (TCP) or 단순히 빠르고 가볍게 보낼 것인지(UDP)를 결정하는 종단 간 (End-to-End) 신뢰성을 관리

③ Network Layer (네트워크 계층)

  • 수많은 네트워크가 연결된 세상에서 최적의 경로를 찾는 라우팅을 수행
  • 전 세계의 공용 주소인 IP 주소가 여기서 작동함

④ Data Link Layer (데이터 링크 계층)

  • 인접한 장비 (내 컴퓨터와 공유기)끼리의 오류 없이 데이터를 주고 받도록 프레임(Frame)단위를 관리함
  • MAC 주소가 여기서 사용됨

⑤ Pysical Layer (물리적 계층) 

  • 0과 1의 비트를 전기, 광 신호 등으로 바뀌어 실제 선로로 보냄

TCP/IP가 OSI보다 계층이 적은 이유

→ 효율성 때문, 실제 데이터를 보낼 때마다 7개의 계층을 모두 거치는 것은 오버헤드(Overhead, 추가적인 부하)가 크기 때문임

→ TCP/IP는 사용자가 쓰는 소프트웨어 부분은 하나로 묶고 (Application), 데이터 이동의 핵심적인 세 단계만 명확히 함

 

6. 프로토콜 구조와 네트워크

6.1 Peer to Peer Logical Communication: 수평적 논리 통신

  • 그림에서 상단에 점선으로 표시된 Application protocol과 Transport protocol의 통신 방식
  • 논리적 통신: 송신측의 전송 계측(Transport Layer)는 수신측 (Transport Layer)와 직접 대화하는 것처럼 느낀다.
  • 그러나 실제로는 데이터는 반드시 자신의 하위 계층으로 내려가 물리적인 네트워크(Communications network)를 통과해야 한다

6.2 주소 지정의 계층화 (Tired Addressing)

데이터가 정확히 전송되려면 이중 주소 체계가 필요하다

  • 1. Network address - 네트워크 주소
    • 프로토콜 스택 하단의 Network access 계층과 연결
    • 거대한 통신망 (Communications network)에서 특정 컴퓨터(노드)를 식별함
    • ex) IP주소 - 이 패킷을 서울에 있는 컴퓨터 A에게 보내라
    • 3계층의 소프트웨어는 OS에 들어있음, OS를 구입하면 TCP/UDP/IP를 사는거임
    • OS의 소프트웨어는 Network Interface Card NIC에다가 IP주소를 세팅함
    • 라우터는 이러한 NIC가 반드시 2개 이상있어야하고 즉 2개 이상의 IP 주소가 세팅됨
    • 라우터는 서로 다른 subnet과 연결된 각 포트 마다 IP 주소가 설정되어 있다 
    • 서버 호스트의 경우에도 서비스 지연을 줄이기 위해 둘 이상의 NIC 카드를 장착하고 각 다른 subnet에 연결시킬 수 있다. 이때 각 NIC에는 다른 IP 주소가 설정되어 운용됨.
  • 2. SAP: Service Access Point / Port - 서비스 엑세스 포인트 / 포트
    • Transport와 Application 사이의 통신 방식
    • 컴퓨터 내에 도착한 데이터를 어떤 Application에게 전달할지 식별한다
    • 한 컴퓨터에서 브라우저, 메신저, 게임 등 여러 Application이 돌아갈 때 데이터를 누구에게 전달할지 결정
    • 현재 인터넷 프로토콜에서는 이를 Port 번호라고 부른다 ex) http는 80번, https는 443번

6.3 통신망 (Communications network)의 역할

  • 컴퓨터 C가 데이터를 보내면 Network Access 계층은 데이터를 전기/광 신호로 변환 → 망에 전달 → 망 내부의 라우터, 스위는 Network Address(IP)\를 보고 컴퓨터 A나 B로 데이터를 보내도록 함
  • 상위 계층인 Transport나 Application은 이 망이 이더넷인지 위성 통신 5G인지 전혀 알 필요가 없다

* 네트워크 주소 (Network Address) = IP = 아파트 주소

* SAP = Port = 아파트 동/호수

 

7. Physical Layer (물리 계층) 

  • 데이터를 전송하는 장치 (DTE: Data Terminal Equipment, 컴퓨터)와 실제 데이터를 전송하는 전송 매체(Transmission Medium, 케이블)간의 기계적, 전기적 규격(인터페이스)를 정의한다
  • 데이터가 구리선(UTP), 광섬유(Fiber Optic), 공기(Wireless) 중 어디를 통과하느냐에 따라 물리 계층의 설계가 완전히 달라진다
  • 물리 계층 설계시 고려 사항 3가지
    • 1. 전송 매체의 특성
      • Transmission Rate, Link capacity or bandwith(bits/second)
        • 단위 시간당 보낼 수 있는 비트의양
        • 대역폭이 넓을 수록 더 많은 데이터를 동시에 보낼 수 있다
      • Error rate - 에러율
        • 전송 과정에서 외부 간섭(Noise)등으로 비트가 변형될 확률
        • 물리 계층의 신뢰성(Reliability)를 결정
      • Transmission distance w/o attenuation - 감쇠 없이 전송할 수 있는 거리
        • 신호는 거리에서 멀어질 수록 에너지를 잃고 약해짐 = 감쇠
        • 리피터 (Repeater) 같은 증폭 장치 없이 데이터가 도달할 수 있는 최대 거리 계산 필요
      • Cost - 비용
        • 성능이 아무리 좋아도 설치 및 유지보수 비용이 너무 크면 안됨
    • 2. Nature of Signal - 신호의 성질
      • 비트 0과 1을 어떤 형태로 표현할 것인지
      • 전압: 0V와 5V중 어떤걸 '1'로 할 것인가 (전기신호)
      • 빛의 유무: 빛이 있으면 1, 없으면 0으로 할 것인가
      • 주파수/위상: 무선 통신에서 파동의 모형을 어떻게 바꿀 것인가 → 변조, Modulation
    • 3. Data Rate - 데이터 속도
      • 신호가 초당 몇 번이나 변할 수 있는지
      • 하드웨어의 클록(Clock) 속도와 연관
      • 항상 Data Rate <= link capacity (L1이 설계한 속도), Transmission impairmnet 때문에

* 송신측 컴퓨터가 광케이블로 데이터를 전송하는 데 수신측이 구리선(UTP)을 예상하고 있다면 통신은 일어나지 않는다

* 표준화의 필요 - 커넥터의 모양, 핀의 개수, 사용하는 전압의 세기 등을 아주 엄격하게 표준화 해야 한다

* 신호 대 잡음비 - SNR, Signal-to-Noise Ratio

* 채널 용량 - Channerl Capacity

 

8. Data Link Layer (데이터 링크 계층)

- 물리 계층 바로 위에서 작동, 직접 연결된 두 노드 간의 신뢰성 있는 전송을 책임짐

  • 엔드 시스템(컴퓨터 등)과 그 시스템이 직접 부착된 네트워크 간의 데이터 교환을 담당함
  • 여기서 네트워크란, 인터넷 전체 네트워크가 아니라 내 단말기와 첫 번째 통신망 ex) 우리집 Wi-Fi, 사무실 이더넷을 의미함
  • 데이터 링크 계층의 주요 고려 사항 3가지
    • 1. Next-hop address privison - 차기 홉 주소 제공 (ex. ARP: Address Resolution Protocol)
      • 홉 = 다음 라우터로 가기 = 다음 서브넷으로 가기
      • ARP = default 라우터의 2계층 주소를 찾는 것
      • end host가 속한 LAN에 연결된 라우터를 디폴트 라우터라고 하는데 
      • 패킷이 최종 목적지로 가기 위해 거쳐야 하는 바로 다음의 목적지의 물리적 주소를 지정한다
      • 최종 목적지(IP)의 주소는 변하지 않지만 그곳까지 가기위해 거치는 중간 목적지(라우터 등)의 주소는 계속 바뀐다. 이때 사용하는 주소를 MAC 주소 (Physical Address라고 부른다
    • 2. Medai Access Control: Invoking specific services like priority - 특정 서비스 호출
      • 네트워크 내에서 데이터 전송의 우선순위(priority)나 품질(QoS)을 관리
      • 실시간 영상 통화 데이터와 일반 이메일 데이터가 섞여 있을 때 어떤 것을 먼저 처리할지 결정
    • 3. for two entities attached to the same network or same subnet
  • 네트워크 독립성 (Network Type Independence)
    • 네트워크 유형에 따른 소프트웨어 가변성: 사용되는 네트워크 기술(이더넷, Wi-Fi, ATM)등에 따라 이 계층에서 동작하는 소프트웨어 (드라이버 등)가 각각 다름
      • Ethernet(IEEE 802.3) - 유선 LAN환경에서는 CSMA/CD
      • Wi-Fi (IEEE 802.11) - 무선 환경에서는 CSMA/CA
    • 상위계층의 투명성: 상위 계층(TCP, IP)은 하위 네트워크가 이데넷인지 광랜인지 알 필요가 없음, 즉 동일한 웹 브라우저가 LAN선을 꽂거나 Wi-Fi를 켰을 때 똑같이 작동할 수 있도록 해주는 추상화 계층임
      • 같은 상위 계층의 소프트웨어는 네트워크의 종류에 상관없이 작동함 → 상호운용성 Interoperability

* 프레이밍(Framing): 0과 1의 흐름 속에서 어디가 시작이고 어디가 끝인지 '프레임' 단위로 묶어서 의미 부여

* Flow control과 오류 제어: 인접한 두 장치 사이에서 너무 빠르게 데이터를 보내 수신 측이 감당 못하는 상황을 막고 물리 계층에서 발생한 비트 에러를 감지함

 

9. Network Layer (네트워크 계층) - Host to Host: 호스트 대 호스트 통신, 경로 제어 (Routing)

  • 1. 인터네트워킹(Internetworking)
    • 서로 다른 기술의 망-네트워크(이더넷, Wi-Fi, 위성)들을 하나로 묶어 데이터가 막힘없이 흐르는 절차(Procedure) 정의, 데이터가 여러개의 연결된 네트워크들을 가로 질러 통신하게끔 함
    • 물리적으로는 수십 개의 장비를 거치지만 논리적으로는 송신 호스트와 수신 호스트가 직접 연결된 것처럼 관리
  • 2. 라우팅을 제공하기 위해 IP (Internet protocol) 사용
    • IP: 전 세계의 모든 장치에 고유한 논리적 주소를 부여함
    • 라우팅: 데이터 패킷이 목적지로 가기 위한 수많은 경로 중 최적의 경로(Path)를 선택함
    • 포워딩: 라우터가 들어온 패킷의 목적이 IP를 확인하고 적절한 출력 인터페이스로 패킷을 밀어주는 동작
  • 3. 엔드 시스템과 라우터에서 구현 (Implmented in end systems and routers)
    • 네트워크 계층 세프트웨어는 사용자의 컴퓨터 (End system)뿐만 아니라 망 중간에 위치한 라우터에도 반드시 탑재되어 있어야 한다
    • 라우터: 서로 다른 두 개 이상의 네트워크를 연결하는 독립적인 장치
    • Realy: 라우터는 3계층(네트워크 계층)까지 데이터를 읽어 들인 후 목적지를 확인하고 다음 네트워크로 데이터를 전달(Relay)한다
    • 라우터는 서로 다른 데이터 링크 기술(한쪽은 광케이블, 한쪽은 무선)을 사용하는 네트워크 사이에서 중재자 역할을 수행한다
  • MAC 주소 (2계층): 주민등록번호, 태어날 때 정해지고 바뀌지 않음, 이 사람이 어디사는지는 알 수 없음
  • IP 주소(3계층): 우편번호나 집주소, 네트워크의 위치에 따라 유동적으로 할당됨, 이 주소가 있어야지만 전 세계적인 규모에서 계층적 경로 탐색이 가능함

 

10. Transport Layer - (process to process) : 프로세스 대 프로세스 통신

- 네트워크 계층(IP)이 컴퓨터와 컴퓨터 (Host-to-Host)를 잇는 길을 찾았다면, 전송 계층은 컴퓨터 안에서 돌아가고 있는 특정 프로그램(Process)에게 데이터를 정확히 전송하는 역할을 한다

  • 모든 응용 프로그램(Application)은 데이터 물리적 전송 방식이 무엇이든 상관없이, 이 전송 계층을 공통 인터페이스로 사용하여 데이터를 주고 받는다
  • 컴퓨터는 여러 응용 프로그램이 동시에 네트워크를 사용한다. Transport layer는 포트 번호를 사용해 들어온 데이터를 어떤 으용 프로그램에게 전달할지 결정한다 → Finding the upper-layer process
  •  1. TCP (Transmission Control Protocol) 
    • Connection-oriented 프로토콜로 데이터의 완벽한 전송 보장
    • Reliable End-to-End Delivery (신뢰성 보장): 신뢰성 있는 종단 간 전달을 보장한다. 데이터가 전송 도중 유실되거나 손상되면 이를 감지하고 재전송을 요청하는 오류 검출 및 수정 (Error detection & Error correction) 메커니즘을 수행 
    • Ordering of delivery in the same order as sent: 네트워크 환경에 따라 데이터 패킷이 뒤섞여 도착할 수 있다. TCP는 각 패킷에 순서 번호 (Sequence number)를 부여하여 수신 측 응용프로그램에는 반드시 송신한 순서 그대로 데이터를 재조합해 전달한다
    • Flow control
      • 수신자(receive node)의 처리 속도에 맞춰 수신자(receive's buffer)의 오버플로우를 막기위해 송신 노드(source host)의 전송 속도 (sender's rate)를 조절
    • Congestion control
      • 네트워크 전체의 막힘 현상을 파악해 라우터의 outbuffer의 오버플로우를 막기위해 source host에서 전송 속도 (sender's rate)를 조절
  • 2. UDP (User Datagram Protocol)
    • 비연결성(Connectionless) 프로토콜로, 복잡한 절차를 생략하고 오직 속도와 효율성에 집중
      • TCP와 마찬가지로 상위 계층의 프로세스를 찾아주는 기능을 하지만, 신뢰성 보장(재전송, 순서 보장)하지 않는다
      • Error dection만 한다. 데이터가 깨진지만 확인하고 깨졌다면 그냥 버린다
      • 오버헤드가 적어 전송 속도가 매우 빠르다. 실시간 스트리밍, 온라인 게임, 보이스톡(VoIP)처럼 데이터의 손실을 감수하더라도 끊김 없는 전송이 중요한 서비스에 사용된다

* IP의 한계: 목적지까지 패킷을 보내주지만, 가다가 사라지거나 순서가 바뀌어도 책임지지 않음

 

11. Application Layer

- 하위 계층들이 전송해온 데이터 비트에 비로소 비지니스 로직과 의미를 부여하는 곳

  • Contain logic to support various user applications
    • 하부의 모든 복잡한 네트워크 통신 과정을 사용자로부터 숨기고 사용자가 실제로 필요로 하는 서비스를 구현하는 로직을 담고 있음
    • 서비스의 다양성: 웹 서핑(HTTP), 이메일(SMTP), 파일전송(FTP)이 전부 5계층의 프로토콜
  • 모듈화 구조
    • 각각의 Application에 대해 별도의 모듈이 필요함
    • 각 응용 서비스는 서로 다른 데이터 규격과 동작 로직을 가짐
    • 웹 브라우저 로직으로 이메일을 전송할 수는 없음
  • 응용 프로그램의 변천 전통적 vs. 멀티미디어
    • Traditional Applications
      • 주로 텍스트와 이미지 중심의 정보 전달 및 검색
      • 데이터의 크기가 상대적으로 작고 전송 중 단 1비트의 오차도 허용하지 않는 정확성이 중요
      • HTTP(웹), SMTP(이메일), FTP(파일 전송)
      • 대게 신뢰성이 보장되는 TCP를 Transport Layer의 프로토콜로 사용
    • Multimedia Applications
      • 실시간 오디오/비디오 스트리밍처럼 방대한 데이터를 지속적으로 처리해야 함
      • 실시간성(Real-time)이 매우 중요함. 약간의 데이터 손실은 허용하지만 지연(Latency)이 발생하면 서비스 품질이 급격히 저하됨
      • 스트리밍 서비스, 화상 회의 시스템
      • 속도와 실시간성을 위해 UDP나 이를 보완한 RTP(Real-time Trasport Protocol) 사용

* 애플리케이션이 어떤 프로토콜을 선택할 것인가는 QoS에 달림 

 

12. Application Layer - Traditional Internet-Based Applications - 전통적 인터넷 기반 애플리케이션 

- TCP위에서 동작하는 3가지 전통적 인터넷 기반 애플리케이션

  •  1. SMTP(Simple Mail Transfer Protocol), 포트번호 25
    • 서로 다른 호스트간(메일 서버) 이메일을 교환하기 위한 메커니즘
    • 사용자 에이전트(MUA)가 작성한 메일을 메일 서버(MTA)로 보내고, 다시 목적지 메일 서버로 전달하는 릴레이 방식 이용
    • MUA(사용자 에이전트) → MTA(메일 서버) →목적지 메일 서버
    • 과거) 7비트 ASCII 텍스트만 전송 가능 → 현재) MIME 확장을 통해 첨부파일 등 다양한 파일 처리
  • 2. FTP (File Transfer Protocol), 포트번호 20(데이터), 21(제어)
    • 사용자의 명령에 따라 한 시스템에서 다른 시스템으로 파일을 전송하는 프로토콜
    • 텍스트(ASCII) 파일과 birnary 파일(이미지 등) 데이터를 모두 전송 가능
    • 두 개의 연결 (Control connection & Data connection)을 사용
    • 명령을 내리는 통로와 실제 파일이 오가는 통로를 분리해 효율성 ↑
  • 3. SSH (Secrue Shel), 포트번호 22
    • 네트워크 상 다른 컴퓨터에 로그인(remote login)하거나 원격 시스템에서 명령을 실행할 수 있게 해주는 응용프로그램
    • 과거 Telnet이나 Rlogin은 데이터(비밀번호 포함)를 평문(Plaintext)로 전송하여 보안에 취약했음.
    • SSH는 모든 통신 내용을 암호화하여 중간의 스니핑(Sniffing)공격으로부터 보호

* 이러한 Application은 port로 구분된다, SAP(Service Access Point)

* PID = 로컬에서 OS가 프로세서를 구분하기 위해 사용한 번호

* Port = 글로벌, 규격 있음(16bits, 0 ~ 65535), 외부용, 네트워크 프로토콜이 쓰는 PID

 

13. Application Layer - Multimedia Technologies: 멀티미디어 기술

- 멀티미디어 애플리케이션을 지원하기 위한 멀티미디어 기술들

  • 1. Compression 압축
    • 멀티미디어 데이터(고해상도 이미지, 4K 비디오)를 그대로 전송하기에 너무 큼. 압축 필수
    • JPG (Still Image): 인간의 눈이 미세한 색상 차이보다는 밝기 차이에 민감하다는 점을 이용한 손실 압축 (Lossy Compression) 방식
    • MPG (Video): 비디오는 이미지의 연속, 앞뒤 프레임 사이의 중복된 정보를 제거하는 공간적/시간적 압축 기술 이용
  • 2. Communications/networking 통신 및 네트워킹
    • 대용량 멀티미디어 트래픽을 지원할 수 있는 전송/네트워킹 기술
    • 멀티미디어 트래픽은 대역폭(Bandwidth) 집약적
    • 수많은 사용자가 동시에 애플리케이션(넷플릭스) 접속시 하부 네트워크 구조가 엄청난 처리량(Throughput)을 견뎌야 함
    • 이를 위해 광대역 통신망과 고속 스위칭 기술이 뒷받침 됨
  • 3. Protocol - 멀티미디어 전용 프로토콜
    • TCP는 멀티미디어에 적합하지 않음
    • RTP (Real-time Transport Protocol)
      • 실시간으로 데이터를 전송하기 위한 표준 포맷
      • 패킷에 타임스탬프(Timestamp)를 찍어 수신 측에서 비디오나 오디오를 올바른 시간 순서대로 전송할 수 있도록 도움 
      • UDP 위에서 동작
    • SIP (Session Initiation Protocol)
      • 화상 회의나 인터넷 전화(VoIP)를 할 때, 상대방과 연결을 시작하고 수정하고 종료하는 세선 관리를 담당하는 신호 프로토콜
      • UDP 위에서 동작
  • 4. Quality of Serive (QoS) - 서비스 품질
    • 멀티미디어의 핵심은 바로 QoS 관리, 단순히 데이터를 보내는 것이 아니라 어떻게(Quality) 보내는 것이 중요함
    • Priority (우선순위)
      • 일반 텍스트 데이터보다 실시간 영상 패킷을 먼저 처리하도록 순서 부여
    • Delay Constraints (지연 제약)
      • 데이터가 너무 늦게 도착하면 실시간성이 파괴됨
    • Jitter/Delay Variablity (지연 변이)
      • 패킷이 도착하는 간격이 일정하지 않으면 영상이 뚝뚝 끊김
      • 이를 최소화하기 위해 버퍼링(Buffering)이나 스케줄링 기술 이용

* 멀티미디어를 시청할 때, 애플리케이션 계층에서 압축을 통해 크기를 줄이고, RTP로 시간에 맞춰 데이터를 조립하고 네트워크 장비들이 QoS 정책에 따라 이 패킷들을 VIP 대접하여 먼저 통과시킴

* QoS가 없다면 우리의 화상 강의는 옆집에서 대용량 파일을 다운로드 하는 것 때문에 멈춰버림

 

14. Two-level addressing - 이중 주소 체계

- 이중 주소 체계가 필요하다 (port, IP address)

  •  1. 네트워크 계층(L3)에서의 네트워크 레벨의 주소 = IP
    • 각 호스트는 서브네트워크 상에서 최소 하나 이상의 전 세계적으로 유일한(Unique) 글로벌 인터넷 주소 = IP 주소
    • 라우터는 패킷에 적힌 이 IP주소를 보고 어느 end host로 갈지 결정함
  • 2. 전송 계층(L4)에서의 프로레스 레벨의 주소 = Port
    • 각 프로세스들은 호스트(컴퓨터) 상에서 반드시 서로 다른 포트(Port) 번호를 가져야 한다
    • TCP/UDP가 호스트까지 도착한 데이터를 정확한 목적지 프로세스에게 전달한다
  • 2단계 주소 지정이 필수적인 이유
    • IP 주소: 아파트 단지 주소
    • 포트 번호: 아파트 동/호수
    • 소켓 = Transport layer와 application layer 사이의 SAP (Service Access Point)를 특별히 socket 이라고 부르며 OS library로 구현되어있다.
    • 소켓 주소가 현대 네트워크 통신의 최소 단위인 종단점(Endpoint)를 형성함

 

 

15. TCP/IP 프로토콜 구조의 역사

1. 1970년대

  • 미 국방부 산하 고등연구계획국(APPA) 주도로 패킷 교환(Packet Switching) 방식의 네트워크인 APPANET 구축
  • 당시 컴퓨터 제조사마다 통신 방식이 다른걸 프로토콜 구조로 해결하자는 기초 연구가 수행댐
  • TCP와 IP의 초기 개념 설계

2. 1980년대

  • TCP/IP 프로토콜 스위트(Suite)
    • APPANET은 기존의 NCP 프로토콜 방식을 버리고 TCP/IP 방식 채택
    • 스위트: TCP/IP뿐만 아니라 다양한 보조 프로토콜이 하나의 세트로 묶여 완성되었음을 의미함
  • NSFnet의 등장
    • 미국 국립과학재단(NSF)이 5개의 슈퍼컴퓨터 센터를 연결하기 위해 구축한 네트워크
    • 이 네트워크가 TCP/IP를 채택하면서 인터넷의 중추(Backbone)역할 수행 

 

3. 1990년대 - 표준화와 거대 인터넷 형성

  • 인터넷 표준(Internat Standards): TCP/IP는 더 이상 특정 기관 연구물이 아니라 IEFT(Internet Enginnering Task Force)와 같은 기구를 통해 관리되는 공식적인 인터넷 표준들의 집합체가 됨
  • NSFnet이 민간에 개방되고 상업적 이용이 허용되면서 현대적 인터넷(Internet)이 탄생
  • 수천 개의 서로 다른 네트워크가 TCP/IP라는 단일한 규격 아래 하나로 묶이는 네트워크의 네트워크 시대

4. TCP/IP가 대체되지 않은 이유

  • 개방적 - 누구나 기술 명세(RFC)를 볼 수 있고 구현할 수 있었음
  • 실용성 - 이론적인 완벽함(OSI)보다 실제 작동하는 코드(TCP/IP)를 우선시함
  • 유연성 - 하부 네트워크 기술이 바뀌어도 상위 계층을 수정할 필요 없는 구조 덕분에 광케이블이나 무선 통신 같은 신기술을 빠르게 수용 가능

* 이 견고한 구조때문에 오늘날의 5G, 6G, IoT도 모두 TCP/IP로 통함

 

16. TCP/IP suite에서의 프로토콜들

1. Aplication 응용 계층

- 사용자 서비스와 분산 정보 시스템을 제공

  • TCP 기반 프로토콜들
    • STMP(이메일), FTP(파일), SSH(보안 접속), HTTP(웹), Telnet(원격 접속)
  • UDP 기반 프로토콜들
    • DNS(도메인 이름 서비스), RIP(라우팅 정보 프로토콜), SNMP(네트워크 관리)
    • HTTP - 전통적으로 TCP를 사용, 최근 규격(HTTP/3)에서는 성능 향상을 위해 UDP기반인 QUIC를 이용하기도 함

2. Transport 계층

- End-to-End 간의 데이터 전송 책임, error contorl, flow control, congestion control, reliable delivery

  • TCP (Transmission Control Protocol): connection-oriendted protocol, 에러 제어, 흐름 제어,.혼잡 제어, 순서 및 제어 보장을 통해 신뢰성 있는 연결 보장
  • UDP (User Datagram Protocol): connetionless protocol, 복잡한 제어 없이 데이터를 빠르게 전송하는 비연결형 서비스 제공, 오버헤드 최소화, 

3. Internet / Network 계층

- 하부 물리 네트워크의 복잡함을 숨기고 목적지까지 패킷 유도, 라우팅, QoS, congetion control

  • IP(IPv4, IPv6): 실제 데이터 패킷의 주소를 지정하고 라우팅을 수행하는 핵심 프로토콜
  • 제어 및 지원 프로토콜
    • 3.5 계층 프로토콜 = raw - socket 프로토콜 = 소켓없이 Payload 전달 
      • ICMP(Internet Control Message Protocol): 네트워크 진단 오류 보고 ex) ping 명령
      • IGMP(Internet Group Management Protocol): 멀티캐스트 그룹 관리(특정 그룹에게만 데이터 전송)
      • OSPF: 라우터 간의 경로 정보를 주고 받는 라우팅 프로토콜
      • RSVP (Reserve ReSerVation Protocol): 네트워크 자원 보장을 위한 프로토콜로 멀티캐스트 제공, QoS 제공
    • 2.5 계층 프로토콜
      • ARP (Address Resolution Protocol) 논리적인 IP 주소를 물리적인 MAX 주소로 바꾸어주는 교교량 역할

4. Data Link 계층

- 하드웨어와 논리적 인터페이스를 담당, stream(bit oriented)/packet(byte oriented) oriented, reliable delivery

  • Ethernet, Wi-Fi: 유무선 LAN 표준
  • ATM, Frame Relay, Token Ring : 과거 혹은 특정 광대역 망에서 사용되던 패킷/셀 전송 기술
  • Fram realy - HDLC: connection-oriented protocol, PPP
  • 역할: 비트 흐름을 프레임(Frame) 단위로 구조화하여 인접 노드 간 전송을 관리

5. Physical 계층

- 비트 스트림을 실제 신호로 바꾸어 전송 매체에 실어 보냄

  • 매체 (Medium): Twisted Pari(구리선), Optical Fiber(광섬유), Satelite(위성), Terrestrial Microwave (지상파 마이크로파)
  • 규격: 신호 인코딩 기술, 데이터 속도, 대역폭, 케넥터 모양(RJ-45등) 등을 정의함

 

* IP 계층은 아래에 어떤 기술이 오든 (Ethernet이든 ATM이든) 똑같은 방식으로 동작한다 → 계층 간 독립성

 

17. TCP와 IP의 작동 방식

 

18. Protocol Data Unit (PDU) - 프로토콜의 데이터 단위

* 캡슐화 (Encapsulation)

1. PDU의 구성 요소

  • Payload - 화물이란 뜻으로 상위 계층에서 나에게 넘겨준 데이터 원본, 내가 무엇을 보낼지는 페이로드에 담겨 있음. 계층 N의 인장에서는 무엇지 알 필요가 없는 짐과 같음
  • Header - 해당 계층의 프로토콜이 정상적으로 동작하기 위해 필요한 제어 정보(Control Infomation), 내 계층에서 생성하며 목적지 주소, 오류 검출 코드, 프로토콜 옵션등이 포함됨. 

2. Peer-to-Peer 통신

  • 내가 붙인 헤더 Header는 내 컴퓨터의 하위 계층이 읽으라고 붙이는 것이 아님
  • 헤더는 물리적인 망을 건너가서 만날 상대 호스트의 동일한 계층(Peer)에게 보내는 메세지임
  • 내 전송 계층이 붙인 TCP 헤더는 상대방 컴퓨터의 L3 전송 계층만 읽고 해석함.
  • 다른 계층은 이 헤더를 단지 데이터의 일부로 취급하며 건드리지 않음

 

 

 

19. TCP/IP 프로토콜 구조에서의 계층별 PDU

1. PDU 명칭의 중요성

  • 패킷이 유실되었다 → 라우팅이나 IP 주소 설정 문제
  • 프레임이 에러가 났다 → 케이블 불량이나 Wi-Fi 신호 간섭 등 물리적인 연결 문제일 가능성

2. 헤더는 가이드 라인

  • Encapsulation → 송신의 과정
  • Decapsulation → 수신의 과정
  • 네트워크 헤더 (2계층 PDU인 Frame의 헤더)를 읽고 본인에게 온 프레임이 맞는지 확인
  • IP 헤더 (3계층 PDU인 Packet의 헤더)를 읽고 본인의 IP주소가 맞는지 확인
  • TCP 헤더 (4계층 PDU인 Segment의 헤더)를 읽고 어떤 포토의 앱에게 줄 데이터인지 확인하고 TCP 헤더를 벗겨 User Data만 응용 프로그램에 전달
  • 사용자가 원하는 QoS에 맞춰서 가능한 최소한의 헤더를 쓰는 것이 좋음

3. 보안의 관점

  • 방화벽(Firewall) - IP 헤더와 TCP 헤더를 읽고 허용되지 않은 IP나 포트면 패킷을 버림
  • DPI (Deep Packet Inspection) - 헤더뿐만 아니라 안쪽의 User Data까지 검사하여 악성코드 확인

 

20. L4에서의 TCP (Transmission Control Protocol)

- 애플리케이션 간의 데이터 전송을 위한 Reliable한 연결을 제공 (No loss, No duplicate, In order)

 

1. 연결 지향성 (Connection- oriented) 프로토콜

  • 데이터를 보내기 전, 다른 시스템에 있는 두 개체(Entitiy)간의 임시적인 논리적인 연결(logical association)을 먼저 맺음. 이를 위한 3단계 수명 주기(Lifecycle)를 가짐
    • (1). Connection Set-up: 통신을 위한 통로 개설
    • (2). Data Transfer: 신뢰성을 유지하며 데이터를 주고 받음
    • (3). Disconnection: 통신이 끝나면 자원을 반납하고 연결 해제

2. 3-Way Handshake: 신뢰의 시작

- 연결 설정 단계에서 일어나는 일로 두 호스트 간의 세개의 세그먼트가 교환된다

  • SYN (Synchronize): "안녕, 나랑 대화할 수 있어? 내 순서 번호는 X야"
  • SYN-ACK (Synchronize-Acknowledfement): "응, 나도 대화 가능해. 네 번호 X 확인했고, 내 번호는 Y야"
  • ACK (Acknowledgment): "확인했어 이제 데이터 보낼게. 네 번호 Y 확인했어"

이 과정을 통해 양측은 서로가 통신 준비가 되었음을 확인하고, 데이터의 순서를 맞추기 위한 초기 번호를 교환한다

 

3. TCP의 PDU: TCP Segment

  • TCP가 취급하는 데이터 단위를 Segment라고 함. 
  • 세그먼트의 헤더에는 Source와 Destination의 port번호가 담겨져 있음
  • 패킷이 어느 앱에서 나와서 어느 앱으로 가야하는지 식별함
  • Connection의 정의
    • 하나의 TCP 연결은 [출발지 IP, 출발지 포트, 목적지 IP, 목적지 포트]의 4가지 요소(튜플)의 조합으로 정의됨
    • 포트 쌍 (pair of ports)이 연결의 고유한 식별자가 됨

4. The cost of Reliability - 신뢰의 비용

  • 하부 IP 계층이 불완전하기에 TCP 계층이 꼼꼼하게 확인 절차를 거침
  • IP는 패킷을 잃어버릴 수도 있고 순서를 바꿀 수도 있음
  • TCP는 이를 보완하기 위해 재전송(Retransmission)과 재조합(Reordering) 기능을 수행함
  • 신뢰성(Reliability)을 얻는 대신 오버헤드(Overhead)가 발생해 UDP보다 전송 속도가 느림 → 트레이드 오프 (Trade-off)

 

5. 각 개체(Entity)들은 Connection 중에 TCP segment를 추적한다

 

1.Relability Control - 신뢰성 제어

  • 손실(loss) 및 손상(damaged) 복구 (no-loss deliver) - 송신 측은 세그먼트를 보낸 후 상대방으로부터 ACK(확인 응답)가 오지 않으면 데이터가 유실된 것을 간주하고 다시 보냄 →  Retransmisstion
  • 순서 보장 (in-order) - 각 세그먼트에 부여된 순서 번호(Sequence Number)를 통해 수신 측은 뒤죽박죽 도착한 패킷들을 원래 순서대로 정렬한다. 결과적으로 응용 프로그램은 데이터가 하나도 빠짐없이 송신된 순서를 그대로임을 보장받음

2. Flow Control - 흐름 제어

  • 송신자와 수신자 사이의 속도차이로 인해 발생하는 버퍼 오버플로우를 조절함
  • 버퍼 오버플로우 방지: 송신 측이 너무 빨리 데이터를 보내 수신 측의 컴퓨터 메모리(Buffer)가 이를 처리하지 못하고 버려야 할 경우, 송신자의 데이터 전송 속도를 조절한다
  • 슬라이딩 윈도우 (Sliding Window): 수신 측은 자신의 남은 버퍼 크기 (Window Size)를 송신 측에 계속 알려준다. 송신 측은 이 크기를 넘지 않도록 전송량을 조절해 데이터 유실을 방지한다
  • 2계층에서 HDLC(하나의 링크로 연결된 두 노드 사이에서), 4계층의 TCP(통신의 양 끝에서)가 관리함
  • 일대일 관계

3. Congetion Control - 혼잡 제어

  • 네트워크를 연결하는 라우터의 오버플로우로 엔드 유저의 전송속도를 떨어트리는 현상 (네트워크 혼잡)을 말함
  • 라우터의 output buffer가 꽉 차서 패킷을 버리기 시작하면 (Congestion) TCP는 이를 감지하고 스스로 전송 속도를 대폭 줄인다

21. UDP (User Datagram Protocol)

 

1. 3 NO

  • 전송 보장 없음 (No guarantee of delivery) → 패킷이 가다가 사라져도 (Lost) 다시 보내주지 않음
  • 순서 유지 없음 (No preservation of sequence) → 보낸 순서와 상관없이 먼저 도착하는 대로 상위 계층에 던짐
  • 중복 방지 없음 (No protection against duplication)  같은 패킷이 두 번 들어와도 걸러내지 않음

2. 최소한의 오버헤드(Overhead)

- UDP가 신뢰성을 포기한 대신 압도적인 속도와 가벼움을 택함

  • Error dection(에러 탐지)만 수행, Correctinon 하지 않음
    • 데이터가 깨졌는지 확인(Checksum)은 하지만 고치진 않음 .틀리면 그냥 버림
  • 포트 번호 기반 프로세스 식별: 전송 계층으로서의 최소한의 역할인 어떤 앱에게 줄 것인가만 수행함
  • 연결 설정 없음: TCP처럼 3-way handshake하느라 시간 낭비 안하고 바로 데이터 던짐

3. UDP를 사용하는 어플리케이션

- 이렇게 위험해보여도 UDP가 없으면 현대 인터넷은 마비됨

  • SNMP(Simple Network Management Protocol): 네트워크 장비들의 상태를 관리할 때, 관리 데이터 때문에 네트워크가 느려지면 안되므로 UDP 사용
  • DNS (Domian Name System): 웹사이트 주소를 물어볼 때(Query), 짧은 응답을 빨리 받는게 중요함. 하나 안오면 그냥 다시 물어보면 됨
  • 실시간 스트리밍 서비스를 위한 HTTP: 유튜브, 넷플릭스(최근 QUIC/HTTP3), 보이스톡 등은 지연 시간(Latency)가 가장 중요함. 화면 픽셀 하나 깨지는 것보다 1초 뒤에 영상 나오는게 더 큰 문제이기 때문
  • 스마트 어플리케이션

* UDP는 TCP의 획일전인 신뢰성 메커니즘을 거부하고 내가 만든 앱(Application Layer)에서 필요한 만큼만 신뢰성을 조절하겠다는 고도의 설계 전략임.

* 최신 프로토콜인 HTTP/3는 UDP 기반으로 설계되어 TCP의 단점은 버리고 속도는 챙기면서 신뢰성은 직접관리함

 

TCP와 UDP 헤더

 

Source Port & Destination Port

  • Two-level Address의 핵심으로 데이터가 어떤 앱으로 나와서 어떤 앱으로 가야하는 지 결정, TCP와 UDP 모두 이 주소 체계는 동일하게 사용함

Checksum

  • 데이터가 전송 중에 깨지지 않았는지 검사하는 최소한의 장치

TCP의 헤더 = 20byte

  • Sequence Number: 패킷들의 순서 번호, 뒤섞여 도착한 패킷을 순서대로 맞추기 위함
  • Acknowledgement Number: 상대방에게 어디까지 잘 받았는지 알려주기 위한 확인 번호
  • Flags (SYN, ACK, FIN): 3-way handshake나 연결 종료 등 현재 패킷의 상태를 알려주는 깃발
  • Window: 수신 측이 남은 버퍼의 크기를 알려주어 Flow Control을 수행

UDP의 헤더 = 8byte

  • Source Port, Destination Port, Length, Checksum
  • 초경량 구죠
  • 오로지 배달(Port)과 에러 검사(Checksum)만 함. 나머지는 응용 프로그램이 알아서 하게 던짐. 
  • 데이터 전송 시 발생하는 지연 (Lantency) 최소화

네트워크 설계자가 TCP를 쓸지, UDP를 쓸지 알아서 선택한다

  • 웹 페이지(HTTTP/1.1) - TCP
  • 실시간 게임/영상 - UDP

22. Internet Protocol, IPv4 vs. IPv6

1. 주소 고갈 문제의 해결

  • IPv4의 한계: 32비트 주소 체계는 약 43억 개의 주소를 제공한다. 전 세계 인구수와 IoT 장비 수가 43억 개를 넘엇서 주소가 부족하다.
  • IPv6의 해법: IPv4보다 4배 더 긴128비트 주소 체계를 채택했다. 사실상 무한개에 가까운 주소를 제공한다.

2. 속도 최적화를 위한 헤더 설계

- Speed processing/forwarding: 라우터의 처리 속도 향상

  • 40바이트의 고정 길이 헤더: IPv4의 헤더는 옵션에 따라 길이가 가변적이라 라우터가 매번 헤더 길이를 계산해야 했다. IPv6는 헤더 길이를 40바이트로 고정하여 라우터가 하드웨어적으로 훨씬 빠르게 패킷을 처리할 수 있다
  • Checksum(체크섬) 제거: 데이터 오류 검사는 L2와 L4에서 이미 하고 있으므로 중복되는 L3의 체크섬을 제거했다. 라우터가 패킷을 받을 때마다 데이터 오류 검사를 할 필요가 없다
  • 라우터 내의 Fragmentation(단편화) 금지: IPv4에서는 패킷이 너무 크면 라우터가 이를 쪼갰다. IPv6에서는 라우터가 쪼개지 않고 송신 호스트가 미리 경로에 맞는 크기를 보내게 함으로써 라우터의 부하를 획기적으로 줄여 속도를 높였다

3. QoS - flow label

  • IPv6의 헤더에는 flow label이라는 필드가 있다. 실시간 영상이나 그래픽 데이터 같은 Flow에 우선순위를 주어 QoS를 e2e로 보장하려 했으나 그러려면 전 세계 모든 라우터가 IPv6를 써야하고 우선순위를 부여하는 표준적 운영 방식을 합의하기 어려워 실패했다
  • 복잡한 QoS 제어보다는 망 자체의 대역폭을 늘리는 쪽이 더 효율적이라는 시장이 판단에 밀려 실패한 필드가 되었다

* IPv4: 주소는 부족하지만 라우터가 꼼꼼하게 다 확인

* IPv6: 주소는 펑펑쓰고 라우터는 주소만 보고 빠르게 패킷을 전달, 에러 검사나 세부 제어는 End system이 관리

→ End-to-End Principle (종단 간 원칙)

* 호환성 때문에 여전히 IPv4를 더 많이 쓰며 현재는 두 주소 체계를 동시에 사용하는 Dual Stack 방식이 표준이 됨

 

IP의 헤더 (패킷 = IP 헤더 + Payload)

IPv4의 헤더 (20byte)

  • Version: 4bits, IP 프로토콜의 버전을 나타냄, IPv4므로 4
  • IHL (Internet Header Length): 4bits, 헤더의 전체 길이를 32비트 단위로 나타냄. 옵션에 따라 헤더 길이가 변하기 때문에 필요
  • Type of Servie (Tos): 8bits, 데이터 우선 순위나 처리 지연, 처리량 설정하여 QoS 제어
  • Total Length: 16bits, 헤더와 데이터를 합친 패킷 전체의 길이를 바이트 단위로 표시
  • Identification / Flags / Fragment Offset: Fragmentation (단편화)를 위한 것으로 네트워크마다 전송 가능한 데이터 크기 (MTU-Maximum Transport Unit)가 다르기에 큰 패킷은 쪼개고 나중에 다시 합칠 때 사용한다
  • Time to Live (TTL): 8bits, 패킷이 네트워크 상에서 무한 루프에 빠지는 것을 방지한다. 라우터를 하나 지날 때마다 1씩 감소하며 0이되면 패킷을 폐기한다
  • Protocol: 8bits, 데이터(Payload)부분에 상위 계층의 어떤 프로토콜 (TCP, UDP, ICMP)이 들어가있는지 구분한다.
  • Header Checksum: 16bits, 전송 중 헤더가 손상되었는지 확인하는 오류 검출용 필드
  • Source/Destination Address: 각각 32bits, 출발지와 목적지의 IP주소로 IPv4는 약 43억개의 주소를 생성함

IPv6의 헤더 (40byte 고정)

  • Traffic Class: 8bits, IPv4의 Type of Serive와 유사, 패킷의 우선순위 결정
  • Flow Label: 20bits, 특정 흐름(Flow)에 속하는 패킷을 식별해 실시간 영상 스트리밍 같은 서비스에 특별 처리 제공
  • Payload Length: 16bits, 헤더를 제외한 순수 데이터(Payload)의 길이를 바이트 단위로 나타냄
  • Next Header: 8bits, IPv4의 Protocol와 유사한 필드지만 확장 헤더(Extenstion Header)가 뒤따라 올 경우 이를 가리킴
  • Hop Limit: 8bits, IPv4의 Time to Live와 동일한 역할로 직관적인 이름으로 변경
  • Source/Destination Address: 각각 128bits로 사실상 무한에 가까운 주소 할당 가능

달라진 부분

  • Header Checksum 삭제: 현대 네트워크는 물리/데이터 링크 층의 신뢰도가 높고 IP의 상위 계층인 TCP도 체크섬을 수행하기에 라우터의 부하를 줄이기 위해 삭제
  • Fragmentation 관련 필드 삭제: 필요시 확장 헤더 사용
  • Flow Label: 단순한 전송을 넘어 데이터 흐름의 특성에 대한 최적화 노력 시도 but 실패 

23. 표준화된 프로토콜 구조

- 네트워크를 만들 때 서로 다른 제조사의 장비들이 어떻게 오류 없이 대화할 수 있는지에 대한 규칙 정하기

1. Protocoal Specification - 프로토콜 규격

  • 서로 다른 두 시스템 간의 동일한 계층 (Peer Layer)사이에서 일어나는 통신 규약을 의미함
  • 다음과 같은 3가지 정해져야 통신이 이루어진다
    • Format of PDUs (PDU 형식): 각 계층에서 취급하는 데이터의 단위, 어디서부터 어디까지가 헤더인지, 주소는 몇 비트인지 외형적 구조 정의
    • Sematics of all fields (필드의 의미): 헤더 내의 각 비트나 바이트가 무엇을 의미하는지 정의 ex) 첫 4비트는 IP의 버전
    • Allowable sequence of PDUs (PDU의 허용 순서): 데이터를 보냈을 때 응답(ACK)이 언제 와야하는지, 어떤 순서로 패킷을 주고 받아야하는지 등에 대한 절차를 규정

2. 서비스 정의

  • 자신의 상위 계층에게 어떤 기능을 제공할 것인지 정의
  • 추상적인 기능적 기술 (Funcitional Description)임. 즉 하위 게층이 상위 계층에게 어떠한 서비스를 제공할지 추상적으로 약속하는 명세서임

3. 주소지정과 SAP

- 물리적 통신과 논리적인 연결을 잇는 부분

  • SAP (Service Access Point): 한 시스템 내에서 인접한 상하위 계층 간에 데이터가 오가는 논리적인 통로
  • 상위 계층의 엔티티(Entity)는 하위 계층이 제공하는 서비스를 이용하기 위해 SAP를 통해 데이터를 내려보냄

* 네트워크는 Horizontal하게는 다른 시스템과 Protocol을 이용해 통신하고 Vertical하게는 SAP를 통해 Service를 주고 받음

* 이러한 구조 덕분에 OS가 서로 다르더라도 서로 동일한 프로토콜 규격만 준수하면 통신 가능

 

24. Service Primitives and Parameters

- 상위 계층에서 제공하는 서비스를 추상적인게 아니라 실제로 S/W, H/W적으로 구현하는 메커니즘

 

1. Service Primitives

  • Primitives 프리미티브는 상위 계층과 하위 계층 간의 통신을 위해 사용되는 추상적인 명령어나 함수 호출을 의미
  • 기능적 정의 (Specify function to be performed)
    • 연결해라, 보내라, 끊어라 같은 수행해야 할 구체적인 동작을 지정
  • 표준적인 4가지 형태 (Types of Primitives)
    • 1. Request (요청): 상위 계층이 하위 계층에게 서비스를 요청할 때 사용 ex) 데이터 보내줘
    • 2. Indication (지시): 하위 계층이 상위 계층에게 이벤트가 발생했음을 알릴 때 사용 ex) 상대방으로부터 데이터가 왔어
    • 3. Response (응답): 상위 계층이 Indication에 대한 처리를 완료하고 답할 때 사용
    • 4. Confirm (확인): 하위 계층이 Request에 대한 결과가 완료되었음을 상위 계층에게 알릴 때 사용

2. Parameters (파라미터)

  • 프리미티브가 함수라면 파라미터는 그 함수의 인자이다
    • 데이터 및 제어 정보 전달 (Pass data and control information)
      • 단순히 보내라는 명령만으로는 부족함. 무엇을(데이터), 어디로(주소), 어떤 우선순위로(제어정보) 보내질에 대한 세부 정보 필요
    • 주요 포함 내용
      • Data (사용자 데이터): 실제 전송하고자 하는 PDU
      • Addresses (주소): 발신지 및 목적지 SAP 주소
      • Quality of Serive (QoS): 지연 시간, 신뢰성 등 전송 품질에 관한 설정값

 

교수님 요약

프로토콜의 정의

  • 계층적 프로토콜 스택을 사용하여, 통신 기능을 각 계층에서 구현되는 세부 기능들로 분할함
  • 한 장치의 N계층에 있는 프로토콜은 데이터(PDU-protocol Data unit) = 헤더(control info) + 페이로드)를 교환함으로써 다른 장치의 동일한 N계층의 동일한 프로토콜과 통신한다
  •  payload란 각 프로토콜이 최종적으로 전송하고자하는 데이터로, 상위계층으로부터 받는 순수한 data를 의미한다.
  • 서로 다른 두 장비(시스템)에서 같은 계층의 동일한 모듈(peer)들이 서로 주고 받을 데이터(header)들의 format(syntax)과 내용의 의미(semantics) 그리고 행동의 순서를 정의한 것이 프로토콜이다.
  • 즉 해당 모듈이 수행할 작업을 완성하기 위해 두 모듈 사이에 지켜야할 규칙의 집합이 프로토콜임

 

인터넷 통신 시스템은 동등 계층 프로토콜 구조(peer layer protocol architecture)를 기반으로 한다

  • 각 계층의 프로토콜(ex. TCP)은 인접한 하위 계층 프로토콜(ex.IP)의 서비스 사용자(service user)이며, 인접한 상위 계층 프로토콜(ex.HTTP)의 서비스 제공자(service provider)이다.
  • SAP (Service Access Protocol): 인접한 두 계층에 있는 프로토콜 사이의 인터페이스를 말한다. 특별히 Application 계층과 Transport 계층 사이의 TSAP(Transport Serive Access Point)를 Socket(소켓)이라고 한다.
  • 앱 개발자는 Socket programming만으로도 네트워크에 관한 지식없이 네트워크 프로그래밍이 가능하다 

인터넷 (TCP/IP) 프로토콜 스택에서 각 계층의 역할

  • L5) Application 계층: 송신측과 수친측 호스트 사이의 네트워크 응용 서비스를 지워한다. HTTP(웹 서핑), SMTP(이메일) 등, 각 프로세스는 상이한 포트 번호(port number)를 이용한다
  • L4) Transport 계층: 상위 5계층의 프로세스의 포트 번호를 이용해 송신측과 수신측 호스트 사이의 프로세스 간 통신(process-to-process communication)을 담당함. TCP, UDP등
  • L3) Network 계층: 상위 4계층 프로토콜이 있는 호스트의 IP 주소를 이용해 호스트 간 통신(host-to-host communication)을 담당함. IP
  • L2) Data Link 계층: 하위 1계층에 따라 상이한 주소와 알고리즘을 이용해 인접한 노드간의 물리적인 데이터 전송을 담당한다. Ethernet, Wi-Fi, HDLC 등
    • 1계층의 물리적 매체와 기술에 따라 사용하는 하드웨어 주소 체계가 다르다
    • Ethernet(유선 랜)이나 Wi-Fi
  • Application 계층과 Transport 게층은 종단 노드 (End node, host, station)에만 존재하고 네트워크 노드(network node, router)에는 존재하지 않는다.

3계층 (Network 계층)에서의 IP: 호스트간 전송 서비스 ( host-to-host delivery service) 

  • Souce Host에서 전송한 데이터(패킷)을 Destination의 IP 주소를 이용해 Destination Host까지 전달하는 기능을 한다
  • 이외에 congestion, flow control, error correct 등은 제공하지 않으므로 best-effort service를 제공하는 stateless protocol이다.
  • IP 프로토콜은 호스트(end node, end user, station)와 라우터에 존재한다. 호스트는 default 라우터에게 전달하고 router들은 라우팅 프로토콜을 이용해 다음 라우터를 결정한다.
  • 호스트에게는 라우팅 프로토콜이 없다
  • 32bit 길이의 IPv4 주소
    • 형식 a.b.c.d
    • 범위 0 <= a, b, c, d <= 255 ex) 203.24.53.1
    • IP는 OS에 포함된 모듈이나, IP 주소는 OS에 할당하는 파라미터가 아니라 해당 기기가 인터넷에 접속하는 NIC(Network Interface Card)에 할당하는 파리미터
    • 따라서 둘 이상의 NIC 카드를 사용하는 서버 호스트 혹은 라우터는 둘 이상의 IP 주소를 설정할 수 있음

인터넷에서의 특정 호소트의 주소 지정 

  • 인터넷에 연결된 어떤 호스트에서 실행 중인 특정 프로세스에게 데이터를 전달하기 위한 주소를 의미
  • 인터넷에서 특정 프로세스를 찾기 위해서는 IP 주소와 Port번호가 필요하다
  • 즉, 호스트 A의 NIC 카드에 할당된 IP 주소와 A가 사용하는 HTTP 서버 프로세스가 사용하는 port 번호(80)를 알아야 해당 서버에게 데이터를 전송할 수 있다
  • IP 주소 = 집 주소
  • Port 번호 = 수취인
  • IP 주소를 이용해서 중간 라우터들이 destination host를 찾는다 → port 번호를 이용해 해당 process에게 데이터 전달

4계층에서의 TCP vs. UDP (Transport 계층): 프로세스 간 통신 서비스( process-to-process communication service )

  • 공통점
    • 상위 Application Layer가 서비스하는 process를 port 번호를 이용하여 찾아주는 역할을 한다.
    • 서버는 잘 알려진 포트 번호 (well-known port) (ex. 80 for HTTP server process) 이용
    • 클라이언트는 OS가 할당한 임의의 포트 번호 이용 (친구 컴퓨터의 프로세스에 데이터 전달하려면 진짜 친구가 포트 번호 계속 알려줘야함)
    • error dection을 위해 checksum을 한다
  • 차이점
    • TCP: connection-oriented protocol로 reliable한 서비스를 제공한다 (no-loss, no-duplicate & in-order), loss에 민감한 application 들이 선호한다. flow/congetion control도 한다
    • UDP: connectionless protocol로 부가 기능 없이 상위 application에서 보낸 PDU를 곧장 IP에게 내려 보낸다. loss보다 deplay에 민감한 application들 혹은 스스로 필요한 기능을 구현하는 smart application들이 선호한다

 

프로토콜 예시

  • ICMP (Internet Control Message Protocol): IP 패킷 전송 중에 발생한 에러를 해당 패킷을 보낸 송신지(Source)에게 알려주려는 목적으로 개발된 프로토콜
  • OSFP, RIP, BGP: 라우터의 control plane에서 end-to-end path 선택하는 계산을 하는 라우팅 프로토콜
  • 호스트는 라우팅 프로토콜이 없고 그냥 각 패킷을 자신의 디폴트 라우터나 바로 다음 라우터(first hop router)에게 보낸다.

PDU (Protocol Data Unit): 각 계층의 프로토콜들이 다른 노드의 같은 계층, 같은 프로토콜과 주고 받는 정보의 단위이다. header + payload

  • Header: 각 프로토콜이 상위 계층에 제공하는 서비스를 수행하기 위해 peer 프로토콜과 교환할 제어 정보(control info)를 저장한다. (ex. src 호스트의 TCP와 dst 호스트의 TCP)
    • 만약 프로토콜이 큰 헤더를 정의한다면 다음 세 가지를 의미한다.
      • 더 많은 제어 정보 (control info) 포함
      • 다음 상위 계층 프로토콜에게 더 많은 서비스(function) 제공
      • 더 많은 시간이 걸릴 수도
    • 예외) IPv6의 헤더 크기는 40바이트로 IPv4보다 크지만, 필드 개수는 적어 기본 기능이 축소되어 있음
  • Payload: 해당 프로토콜이 전송해야할 순수한 데이터(상위 프로토콜의 PDU에 해당)을 의미한다
    • N 계층 프로토콜은 N+1 계층 프로토콜의 PDU를 자신의 Payload에 저장한다
    • 예를 IP 패킷의 payload에는 TCP segment가 캡슐화(encapsulation)되고, IP 패킷은 ethernet payload에 encapsulation된다

5계층 인터넷 (TCP/IP) 프로토콜 스택에서의 각 계층에서 사용되는 PDU명, 주소, 사용하는 프로토콜 예시

  • L5) Application 계층:
    • Message 
    • URL
    • HTTP for VoD streaming, SMTP, FTP, SSH, IDNS, RIP, HTTP, for real-time streaming...
  • L4) Transport 계층
    • Segment
    • Port 번호
    • TCP / UDP
  • L3) Network 계층
    • Datagram or Packet
    • IP 주소
    • IP
  • L2) Data Link 계층
    • Frame
    • 프로토콜마다 사용하는 주소가 달라진다.ex. Ethernet과 Wi-Fi에서는 48bit의 MAC주소 or HDLC의 7 bits 주소
  • L1) Physical 계층
    • bits
    • Twisted Pair(TP), Coaxial cable (동축케이블), Optical Fiber(광섬유) / radio (무선), satellite (위성)

인터넷과 TCP의 역사: APPANET(NCP) → NSFnet (original TCP/IP) → Internet (Updated TCP/IP 그리고 보안 이슈)

  • 현재 사용하는 인너넷의 원조는 70년대 등장한 네트워크 APPANET이고 당시에는 TCP가 아니라 NCP를 사용했다
  • 이후 NSFnet으로 성장했고 이때부터 현재 사용하는 TCP/IP가 시작되었다
  • 현재의 인터넷은 90년대 초 WWW의 발전으로 급성장하게 되었으며 불특정 다수의 사용자가 연결되면서 보안 이슈가 대두되었다

Service Access Point (SAP)

  • 한 개체(Entity)내에서 인접한 두 계층이 함수 호출, 즉 프리미티브(Primitive-Request/Indication/Response/Confirm)를 통해 서로 통신하는 논리적 위치를 말한다
  • 예를 들어 TCP는 IP 모듈을 호출 (function call)하며 이때 TCP PDU(segment)를 파라미터로 넘겨준다
  • L5와 L4사이의 TSAP는 특별히 Socket이라고 부른다. 그러니까 L5와 L4가 만나는 그 문 자체를 소켓이라고 부름
  • Application 개발자는 네트워크에 관한 지식이 없더라도 socket에 해당하는 OS library들만 잘 사용하면 네트워크 프로그래밍이 가능하다.

L4와 L3는 OS에, L2와 L2은 NIC에 있음