transport segment from sending to receiving host
encapsulates segments into datagrams 把报文封装为数据报
network layer protocols in every host, router
网络层的两个功能:
转发功能(考虑的是局部网络)
move packets from router’s input to appropriate router output
路由功能(考虑的是全局网络)
determine route taken by packets from source to dest
网络层是主机之间的连接(host-to-host)
传输层是进程之间的连接(不考虑中间网络设备)
网络层的三个主要的组件:
网络层和传输层的区别:
1.service : host-to-host
2.no choice : network provides one or the other
3.implementation : in network core
类似于电话线,使用时建立,结束后拆除
每条虚拟电路包括:
VC number can be changed on each link
VC 标识号是可变的,每换了一条链路就会换一个标识号
VC routers maintain connection state information
虚拟电路的路由器包含连接状态信息
从头开始匹配的字节数最多的,来选择对应的端口
datagram :
virtual circuit :
两个主要功能:
transfer packet from input buffer to appropriate output buffer
将包转发
一共有三种转发方式:
不需要选择处理器来处理
共享总线,带宽需要争夺
ver:IP协议版本
head len:IP数据报头部的长度
type of service:服务类型,一般不使用
length:数据报总长度字段(占16位)
16-bit identifier:
flgs:标识位(占3位)
fragment offset:偏移量,指当前分片在原始位置中占的位置
time to live :IP分组的生存期,指该分组最多能经过多少跳
upper layer:
header checksum:校验和
source IP address:
同一个ip地址上映射有多个端口对应内部网络(16-bit的端口号一共有60000多个端口)
NAT translation table: every (source IP address, port #) to (NAT IP address, new port #) translation pair // NAT转发表
replace outgoing datagrams, and then remeber it in NAT translation table , at last replace incoming datagrams // 一记录两替换
争议点:
外部不能直接访问内部地址内的主机,即对外隐藏内部主机(安全性)
如果需要访问内部主机 :
" InternetControlMessageProtocol " 因特网控制报文协议
用于主机和路由器之间的通信:
ICMP协议的功能主要有:
我们需要注意几点:
ICMP的消息包括类型和代码,部分类型和代码表:
其中经常使用的类型和代码消息:
利用ICMP定位源主机和目标主机之间所有经过的路由器
traceroute发送的ICMP报文使用UDP协议
ICMP报文的TTL字段:代表路由器个数
当ICMP报文到达时,源主机会记录下RTT时间。
当目标主机返回 “ port unreachable ”的ICMP报文时,停止发送
参考文章:ICMP协议详解
32-bit address space
fixed-length 40 byte header // 头部长度固定40字节
no fragmentation allowed // 不允许分片处理
数据报格式:
pri:(priority)优先级
payload len : 载荷长度
next hdr : 指向第一个扩展头部的option字段(放在data里)
hop limit : 和TTL一样的作用
source address : 128-bits, 16字节的长度
destination address : 128-bits, 16字节的长度
tunneling: // 隧道
IPv6 datagram carried as payload in IPv4 datagram among IPv4 routers
所谓的路由算法: 寻找最小费用路径的算法
算法分类:
1、静态路由&动态路由:
static
dynamic
2、全局信息&分散信息:
global
decentralized
首先将网络抽象
网络结构图:
链路费用:
c(x,x’) = cost of link (x,x’) 路径费用:(链路费用之和) cost of path (x1, x2,
x3,…, xp) = c(x1,x2) + c(x2,x3) + … + c(xp-1,xp) eg. cost of path
(u,v,w,z)=2+3+5 =10
使用最短路径(Dijkstra)算法
计算从一个结点(“源” )到达所有其他结点的最短路径
伪代码:
1、初始化:
N' = {u} // N'为目前已知的路径
for all nodes for n
if n is a neighbor of u
then D(n) = c(u,n)
else D(n) = ∞
2、循环阶段
find w not in N' such that D(w) is a minimum
add w to N'
update D(n) for each neighbor n of w and not in N' //对最小费用的链路进行更新
D(n) = min( D(n) , D(w)+c(w,n) )
until N' = N
N’ : 目前已知的最小费用路径的集合
D(v),p(v):从源点到该点的路径费用,前驱节点
通过找每一个D(v)、D(w)、D(x)、D(y)、D(z)的最小值,确定一个u到z的最短路径,然后就可以配置路由表
去掉非最短费用的线,只保留最短费用路径可得最短路径树
根据上图可知:u到z的最小路径是uwvyz
可能产生的链路震荡:
链路状态更新的太快并且不断变化,数据报就一直在路由间切换
参考文章:路由选择算法——链路状态算法(包括了算法实现代码)
如果每个结点x以D_x(y)开始,对网络N中所有结点,估计从它自己到结点y的最低路径费用。
IGP(内部网关协议)是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。路由信息能用于网间协议(IP)或者其它网络协议来说明路由传送是如何进行的。
IGP协议包括RIP、OSPF、IS-IS、IGRP、EIGRP。
域:自治系统
Internet网被分成多个域或多个自治系统。一个域(domain)是一组主机和使用相同路由选择协议的路由器集合,并由单一机构管理。换言之,一个域可能是由一所大学或其它机构管理的互联网。
网关间选径协议,是一种内部网关协议,采用距离向量算法。以自治系统(Autonomous System)的方式提供路由选择路由协议
参考文章:
内部网关协议
OSPF基础介绍
RIP路由协议的理解
大型网络中内部网关路由协议(IGP)的选择
TCP/IP之路由算法
路由算法之距离矢量算法和链路状态算法