-프로토콜의 3가지 요소
-간단한 프로토콜의 구조
-OSI 참조모델
<프로토콜의 3가지 요소>
Syntax (구문)
⤷데이터의 포맷
(헤더는 몇 바이트고 이런거)
⤷시그널 계층
2. Semactics (의미)
⤷그 데이터 헤더 어떤 의미를 갖느 냐
⤷제어 정보 (TCP에서 순서번호라든지 그런 정보들)
⤷에러 핸들링 (에러처리) (TCP는 체크섬이 있어서 에러가 있을 때 즉시 보내게 하는게 있음) UDP의 경우에는 재전송이아니라 그냥 drop을 함.
3. Timing (타이밍)
⤷speed matching, 처리할 수 있을 만큼만 보내줌
⤷Sequencing, 순서에 따른 ACK번호를 보냄으로써 시간의 흐름에 맞게 데이터를 주고받을 수 있게 함.
<프로토콜 구조>
⤷모듈로 나누어진 커뮤티케이션 작업
전송계층에서 어플리케이션이 네트워크와 연결을 해주기 위한 서비스 모듈이 필요하다.
⤷프로토콜은 각 기능을 수행하는 모듈로 나뉜다.
<파일을 전송하기 위한 간단한 프로토콜 구조>
⤷Computer X :클라이언트
⤷Computer Y :서버
⤷각각 어플리케이션이 있음
⤷커뮤니케이션 네트워크를 통해서 서로 연결.
⤷FTP는 TCP를 사용함.
⤷커뮤니케이션 서비스 모듈이 TCP/IP에서는 전송계층으로 볼 수가 있다.
-네트워크 접속 계층
-전송계층
-어플리케이션 계층
(파일을 전송하기 위한 클라이언트-서버 응용 프로그램이 필요하게 된다.)
<네트워크 접속 계층 (network access layer)>
⤷파일을 전송하는 응용 프로그램 입장에서 네트워크에 접속하는 계층의 역할은 실제로 내 컴퓨터에서 내가 보내고자 하는 목적지로 가기위해서는 네트워크로 연결되어 가야한다. 그 사이에서 데이터를 교환하기 위해 필요하다.
->목적지의 주소가 필요하다.
(각 단말의 IP주소를 가지고 연결을 하게된다.)
⤷각 어플리케이션은 포트번호, 전송계층의 주소가 또 필요하게 된다.
⤷하위에 사용되는 네트워크 매체가 무엇인지에 따라 의존적일 수 밖에 없다.
<전송 계층 (transport layer)>
⤷안정적인 데이터 교환을 중시.
-UDP는 잘받았다고 ACK을 보내지 않는다
어디까지 받았다고 알려주지도 않고
에러가 있으면 drop한다.
-TCP는 어디까지 받았고 뭐 받을 차례고 에러가 있으면 다시 보내달라고 한다. 안정적인 데이터를 보장해 준다.
⤷네트워크 접근 계층에서는 시스템이 사용하는 네트워크가 무엇인지가 중요하지만
접속 계층에서는 사용되는 하위 계층에 독립적이다.
⤷실제로 연결되는 네트워크에 대한 것은 네트워크 접속 계층에서 해주기 때문에 네트워크 접속 계층 상위에 놓이는 전송계층에서는 신경쓸필요가 없다.
⤷상위 어플리케이션에 대해 독립적이다.
(ex)FTP가 TCP를 사용할 수도 있고 UDP를 기반으로 사용할 수도 있다.)
-각 계층에서 수행하는 일들이 유기적으로, 누구하고도 접촉해서 이루어질 수 있도록 함
<어플리케이션 계층 (Application layer)>
⤷서로 다른 유저의 다양한 어플리케이션을 지원.
ex) 파일 전송, 이메일, 스트리밍 등
<프로토콜 구조와 네트워크>
⤷3개의 end system
⤷각 어플리케이션들이 있음
⤷네트워크로 서로 연결되어 있음
⤷네트워크 접속 계층은 A,B,C를 각각 나타내기 위한 주소가 필요.->network address
⤷TCP/IP에서는 IP address라고 부름
⤷전송계층에서는 network 주소를 보고 A인지 C인지까지는 찾을 수 있음 근데 컴퓨터 A가 한번에 하나의 프로그램만 띄워놓진 않잖음 다양한 프로그램을 씀 다양한 어플리케이션들을 구분할 수 있어야함 그게 TCP/IP에서는 port number임. OSI 7 layer 모델에서는 Service access point라고 함. (서비스에 접속하기 위한 주소)
[OSI] [TCP/IP]
network address = IP address
service access point = port number
⤷컴퓨터 A, B, C를 나타내기 위한 주소체계가 필요함. (목적지를 나타내는 주소체계)
⤷각 end system을 나타내는 주소를
network address라고 함. (=IP address)
이 주소 체계는 두 단계의 주소체계가 필요.
각 컴퓨터가 유일한 네트워크 주소를 가져야함.
하나의 end system에는 여러개의 응용 프로그램이 동작하고 있기 때문에 각 응용 프로그램에는 컴퓨터 내에서 고유한 주소가 필요하다. (port number, SAP)
->IP주소로 단말 시스템을 찾아가고 여러 응용프로그램 중에 어떤 응용 프로그램이랑 통신을 할 거냐를 포트 번호로 찾는다.
<Protocol Data Units (PDU)>
⤷어플리케이션 계층 : 데이터그램
⤷전송 계층 : 세그먼트
⤷네트워크 계층 : 패킷
⤷데이터 링크 계층 : 프레임
=> 계층 상관없이 다 통틀어서 쓰는게 PDU.
⤷각 레이어에 전송하기 위해 쓰는 프로토콜을 말한다.
(application header + user data)
= application PDU
(응용 계층의 데이터 유닛)
⤷전송계층은 user data를 조각내게(fragment)된다.
⤷각 fragment는 전송계층 헤더가 붙는다.
⤷헤더에는
-목적지의 포트넘버 (SAP)
-순서번호
-에러 감지 코드
가 포함된다.
⤷전송 계층의 프로토콜 데이터 유닛을
“전송 계층 PDU”라고 한다.
<PDU>
⤷상위 계층의 내용이 하위 계층의 데이터 파트에 들어가고 거기에 제어 파트가 헤더에 붙게 된다.
⤷PDU는 응용 계층의 데이터들을 쪼갠 다음 전송계층의 데이터파트에 들어가고 제어 정보가 헤더에 붙는다. 이걸 전송 계층 PDU라고도 부르고 세그먼트라고도 부르는 것이다.
⤷이 구조가 패킹, 포장한다고 해서 encapsulation (캡슐화) 라고 부른다.
⤷sender입장에서는 헤더를 붙이게 되고
(캡슐화)
receiver입장에서는 응용계층으로 올리기 위해 (캡슐화해제) 데이터만 올린다.
<Network PDU>
-> 네트워크 해더가 붙음
⤷헤더에는 목적지 컴퓨터의 네트워크 주소가 있다.
⤷네트워크 계층에서의 가장 중요한 역할은 라우팅이다. 길 찾아가는 것. (최단 경로, 우선 순위)
<프로토콜 구조의 표준화>
⤷대표적인 표준이 OSI와 TCP/IP가 있다.
(7계층) (5계층)
(OSI, Open System Interconnection)
⤷두 장비가 통신을 하기 위해서는 표준이 필요하다.
⤷회사 입장에서는 표준이 있어야 시장에 제품을 팔 수 있다. 서로 장비들이 같이 동작.
⤷소비자 입장에서는 표준화 된 장비여야 다 사용할 수 있기 때문에 좋음.
-> 대표적인 표준 2가지
1. OSI Reference model (OSI참조모델)
⤷말그대로 참조하기 위한 모델이고 실 제로 제품이 나오진 않음 (이론적)
2. TCP/IP protocol suite
⤷현재 가장 많이 사용되는 표준
⤷산업체 표준
<OSI, Open System Interconnection>
⤷ISO 국제 기구에서 개발.
⤷7계층으로 이루어짐. OSI 7계층.
⤷계층적인 이론적인 모델
⤷통신에 있어서 필요한 기능들의 일부분의 기능을 수행한다는 것.
⤷각 계층은 다음 하위 계층에 의존하여 더 많은 기본 기능을 수행한다.
(전송 계층은 네트워크계층에서 제공하는 서비스를 받는다.)
⤷각 계층은 다음 상위 계층에 서비스를 제공한다.
⤷한 계층이 변했다고 해서 다른 계층이 변해서는 안된다. 각 계층은 하위 계층에서 제공하는 서비스를 받긴 하지만 동작함에 있어서 독립적으로 동작한다.
⤷응용 계층 : 사용자들이 접촉하는 계층
분산된 정보처리를 제공.
⤷presentation, session 계층은 TCP/IP에서는 이 부분이 응용 계층 안에 포함이 된다.
presentation 계층 : 각각의 프로세스와 독립적으로 데이터를 표현하는 방법을 제공.
암호화하고 복호화하는 것도 이 계층에 포함됨.
session 계층 : 양 단에 응용 프로그램들이 통신을 함에 있어서 제어하기 위한 구조를 제공.
⤷전송 계층 : 안정적이고 투명한 데이터 전송을 제공. 순서도 제공. end-to-end. 흐름제어(receiver가 처리할 수 있을 만큼만 보냄) winSize로.
⤷네트워크 계층 : 실제로 시작주소에서 목적지주소까지 데이터전송을 담당. 보내는 내용이 메신저 내용인지 파일인지 신경쓰지 않는다. 그냥 양 컴퓨터 간에 데이터전송을 보장하는 계층이다. 이때 사용하는 주소가 IP 주소이다.
⤷데이터링크 계층 : 시작 컴퓨터에서 목적지 컴퓨터까지 데이터를 주고 받는데 중간에 여러 라우터를 거쳐서 가게 된다. 만약 라우터를 4개를 거쳐가면 시작컴퓨터에서 1번째 라우터까지 데이터가 안전하게 전송되는걸 보장하는 계층이다. 바로 인접한 두 노드간에 데이터의 안정적인 전송을 보장해주는 계층.
⤷물리 계층 : 물리 매체가 뭐냐. 유선인지 무선인지. 0과 1의 비트에 에러가 있는지 없는지까지 체크해줌.
⤷컴퓨터 X에서 컴퓨터 Y로 전송을 하는 상황.
⤷유저 데이터에 application 헤더가 붙게 된다.
⤷이걸 encapsulation (캡슐화)라고 함.
받는 쪽에서는 캡슐화 했던걸 풀어가면서 필요한 데이터를 꺼냄.
[TCP/IP 프로토콜 구조]
⤷DARPA라는 기구에서 만듬
⤷현재 사용하고 있는 글로벌 인터넷임
⤷공식적인 모델이 있다기 보다 실제로 동작하는 모델이다. 산업체에서 사용.
⤷Network Access layer
= datalink layer
(책마다 용어가 다름)
⤷총 5계층으로 이루어져있다.
⤷물리 계층 : 실제로 전송되는 장비들간에 전송 매체가 무엇인지. 무선인지 유선인지.
LAN을 쓰는지 DSL을 쓰는지 케이블을 쓰는지 전화선을 쓰는지. 전송률.
⤷데이터링크 계층 : 바로 인접한
-네트워크 계층: 출발지부터 목적지까지 다 담당.
-데이터링크 계층: 바로 인접한 곳만 담당.
노드와 노드 간 프레임 을 제대로 보내는 것을 목적으로 함.
⤷네트워크 계층(IP계층): 라우팅,포워딩 기능이 가장 중요함.
⤷전송 계층(TCP) : 안정적인 데이터 전달을 보장. ACK. 순서번호를 통해 순서대로 보내고 에러있으면 재전송해줌. UDP도 있음
⤷응용 계층 : 사용자의 응용 프로그램을 지원하는 계층. HTTP는 웹, SMTP는 이메일.
⤷데이터링크 용어 사용.
[TCP] 교재 217p
⤷Transmission Control Protocol
⤷전송 제어 프로토콜
⤷안정적이고 신뢰적인 연결 제공
⤷세방향 핸드쉐이크
⤷다른 시스템에 있는 엔티티 간의 임시 논리적 연관
⤷TCP 세그먼트라고 부름.
⤷출발지와 목적지의 포트 번호가 필요하다.
⤷어떤 응용 프로그램이 만든 데이터냐라는 걸 찾기 위해서 포트번호가 필요.
⤷포트 번호는 출발지와 목적지 쌍으로 이루어져서 데이터를 주고 받게 된다.
⤷TCP는 각 연결에서 엔티티 간의 세그먼트를 추적한다. 순서에 맞는 전송을 보장해 준다.
[UDP] 교재 187p
⤷User Datagram Protocol
⤷전송 보장 못함
⤷전송 순서 보장 못함
⤷복제에 대한 보장 못함
⤷최대한 빠르게, 오버헤드를 최소화한다.
⤷포트 번호가 필요하다.
-TCP 헤더 : 20바이트
-UDP 헤더 : 8바이트
-> 컴퓨터 네트워크에서는 두 가지 주소가 필요하다. IP주소와 포트 번호.
IP주소 : 출발지와 목적지의 컴퓨터를 구분하기 위한 것
포트 번호 : 컴퓨터에서 수행되고 있는 어플리케이션을 구분하기 위한 것
[IP와 IPv6]
⤷IPv4의 헤더는 20바이트
IP주소가 4바이트 (출발지, 목적지)
⤷IP는 체크섬 기능이 있다.
⤷잘못된 전달을 방지하기 위해 체크섬이 헤더에 적용된다.
⤷프로토콜 필드는 TCP, UDP 등의 전송 여부를 보여준다.
⤷조각화에 사용되는 플래그 및 조각화(fragmentation) 오프셋이 헤더에 포함된다.
⤷1996년에 IPv6로 업그레이드가 되었다.
⤷처리가 빨라졌다.
⤷IP주소가 16바이트
- IPv4의 IP주소는 4바이트 (32비트)
총 20바이트
- IPv6의 IP주소는 16바이트 (128비트)
총 40바이트
⤷고갈될 일이 없음.
[IPv4 헤더]
교재 303p
[IPv6 헤더]
교재 321p
⤷IPv6는 중간 중간에 라우터에서 fragmentation이 처리가 안됨. 출발지와 목적지에서만 처리됨.
[Addressing Level]
(네트워크 level 주소)
IP주소 (TCP/IP)
Network service access point (OSI)
(시스템 내 프로세스)
포트 번호 (TCP/IP)
Service access point, SAP (OSI)