1.网络协议分层(举例四层)
应用层 | 直接为用户的应用进程提供服务(HTTP、FTP、DNS等) |
传输层 | 传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议:TCP(Transmission ControlProtocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。 |
网络层(又名网络互连层) | 选择合适的路由,使发送站的运输层所传下来的分组能够正确无误地按照地址找到目的站,并交付给目的站的运输层。网络层将运输层产生的报文或用户数据报封装成分组(IP数据报)或包进行传送 |
数据链路层(又名网络接口层) | 用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱 动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。 |
首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求。
接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求。
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)
2.IP协议
(1)IP(Internet Protocol)网际协议位于网络层,与IP协议配套使用的四个协议:
①地址解析协议ARP(Address Resolution Protocol):是解决同一个局域网上的主机或路由器的IP地址和硬件地址(MAC地址,Media Access Control Address)的映射问题,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。
如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。
②逆地址解析协议RARP:是解决同一个局域网上的主机或路由器的硬件地址和IP地址的映射问题
③网际控制报文协议ICMP:提供差错报告和询问报文,以提高IP数据交付成功的机会
④网际组管理协议IGMP::用于探寻、转发本局域网内的组成员关系
IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。由因特网名字与号码指派公司ICANN进行分配。
(2)IP地址分类:
每一类地址都由 网络号 net-id和 主机号 host-id组成
A类
由1字节的网络地址和3字节主机地址组成
网络地址的最高位必须是“0“,可指派的网络数为2^7-2,减2的原因是0.0.0.0对应“本网络”,另外一个是127.0.0.1是本地软件的回环地址,用于测试自己电脑IP地址是否可用
地址范围1.0.0.0到126.255.255.255
最大主机数为2563-2=16777214台,减2的原因是全0的主机号字段代表该IP地址是"本主机“,全1表示”所有的“,表示该网络上的所有主机
B类
由2字节的网络地址和2字节主机地址组成
网络地址的最高位必须是“10”,可指派的网络数为 2^14 -1,因为最高位为10,所以不存在全0全1的情况,但是B类网络地址128.0.0.0是不指派的,可指派最小网络地址是128.1.0.0
地址范围128.0.0.0-191.255.255.255
最大主机数为2562-2=65534台,减2同样是全0全1情况
C类
由3字节的网络地址和1字节主机地址组成
网络地址的最高位必须是“110”,可指派的网络数为2^21-1,192.0.0.0不指派,最小可指派网络地址是192.0.1.0
地址范围192.0.0.0-223.255.255.255
最大主机数为256-2=254台,减2同样是全0全1情况
D类
是多播地址,由1110开始
E类
E类地址保留为今后使用
私有ip
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
(3)IP数据报
IP数据报格式:一个IP数据报由首部(20 字节+可选字段)和数据两部分组成
分组转发
(1)从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N
(2)若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)
(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)
(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)
(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)
(6) 报告转发分组出错
3.确保可靠性的TCP协议
按层次分,TCP 位于传输层,提供可靠的字节流服务。所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。
为了准确无误地将数据送达目标处,TCP 协议采用了三次握手(three-way handshaking)策略。用 TCP 协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。
握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。若在握手过程中某个阶段莫名中断,TCP 协议会再次以相同的顺序发送相同的数据包。