web开发常见的计算机网络协议

协议模型

OSI七层协议模型

OSI七层协议模型分为应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

TCP/IP模型 TCP/IP模型分为应用层,传输层,网络层,数据链路层

TCP/IP模型和OSI七层协议模型对应关系

此处输入图片的描述

链路层

直接的0和1电信号是没有意义的,所以以字节为单位进行电信号分组,以太网规定一组电信号就是一个数据包,用表示,

数据包的结构

数据链路层的工作就是,对电信号进行分组传输,然后当数据到达子网后,以太网通过广播的形式,发送数据给所有主机,主机通过匹配数据首部的MAC地址,得到数据。以太网和WiFi是链路层的两种协议

网络层

在网络层里,有三个很重要的协议,IP协议,ARP协议,路由协议

网络层主要工作定义网络地址,区分网段,对于不同子网数据进行路由,子网内MAC寻址

IP协议

网络层通过应用层传入的ip来进行主机的寻址,ip地址分为IPV4和IPV6,IPV4前面部分代表网络地址,后面部分代表局域网中地址,如果两个IP地址在同一个子网内,网络地址一定相同

IP数据包

网络层包装的数据包叫IP数据包 首部:首部包含目标IP地址源IP地址数据:数据包最大长度1500个字符,超过就要分包,数据过短,传输效率的降低.

特点

IP首部

路由协议

由于ARP协议MAC寻址在同一个子网中,网络层首先通过IP协议判断两个主机是否同一个子网,如在同一个子网,则ARP寻址,广播数据包到子网主机;如不在同一个子网,以太网将数据包发送到网关进行路由,最终到达目标IP子网,再通过ARP寻址。路由器(router)实际上就是一台配备有多个网卡的专用电脑。每一台主机和路由都能了解局域网内的IP地址和MAC地址的对应关系,这是实现IP包封装(encapsulation)到帧的基本条件

IP路由过程中,源IP,目的IP不会变;源/目的MAC地址会逐跳变化

特殊IP地址

网络,子网,主机,源端,目的端

0,0,0,0 网络上主机 没有获取IP地址之前 127开头 环回地址 全1 受限全网广播 10开头 面向网络的广播 1开头 面向子网的广播

子网掩码

IP地址和子网掩码通过按位与运算后就可以得到网络地址

ARP协议

设备驱动程序从不检查IP数据报中的目的IP地址。

知道主机的IP地址并不能让内核发送一帧数据给主机,ARP功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射

首先ARP请求目标主机IP地址,到达数据链路层后,子网内主机借助链路层以太网协议二层群播子网主机,主机根据数据包IP地址进行匹配,匹配到后就二层单播回应ARP返回自己MAC地址,以此确定目标机MAC地址,并缓存IP和MAC的映射关系,下次请求节约寻址时间。arp -a查询本机缓存的映射

在没有得到IP与目的主机MAC绑定关系时,网络中只会有ARP包,不会有IP包。

ARP结构

ARP代理

no ip routing的路由器或也能通过其他开启ARP代理的路由器 向目的主机发送包。返回MAC地址是代理路由器MAC地址。比如防火墙对外返回防火墙MAC地址,对内代理。

缺点

因为ARP响应有后来响应优先特点,所以在形成环路的环境下,代理ARP会造成MAC解析错误,环路问题

未开启代理路由器,只会响应直连网络响应

免费ARP

自己问自己IP地址时多少,主要判断是否有IP重叠的问题

免费ARP广播其他主机,会导致主机更新ARP映射,如果是非法攻击行为,导致ARP劫持

ICMP

传递差错报文以及其他需注意的信息,检验和字段覆盖整个ICMP报文(包含IP首部,)。

不会产生差错报文场景

路由器肯定会返回ICMP报文,应用处不处理ICMP报文决定开发者是否实现

源站路由

传输层

作用

定义端口,标识应用程序,实现端到端的通信

UDP协议

一个简单的面向数据报的运输层协议,进程每个输出产生一个UDP数据报,并组装成一份待发送的IP数据包

通过IP层把数据发送出去,但是并不保证它们能到达目的地,UDP协议是没有确认机制的

IP数据报产长度超过网络MTU,就需要IP数据报进行分片

UDP校验和覆盖UDP首部和UDP数据。IP校验和只覆盖IP首部。校验和把16bit字相加。为了校验和的计算,最后增加填充字节0.

IP数据报分片过后,只有到达目的地才进行重新组装

构成

TCP协议

面向连接,可靠,基于字节流的通信协议。通过建立三次握手,四次挥手的确认机制来保证数据的安全,可靠性。TCP数据包是没有长度限制的,但是一般情况下是不会超过IP数据包的长度。

序列号保证了数据按顺序传递

流量控制:接收方确认数据时,将缓冲区大小发回发送方。发送方控制发送流量 拥塞控制:发送方维护一个拥塞窗口,表示无需确认可以发送未完成数据总数。连接建立,初始化,拥塞窗口大小为系统默认值,当发送方检测到超时错误时,会减少拥塞窗口大小,反之,增加。有效保护了网络基础带宽

sliding window

对于发送方来说,滑窗的左侧为已发送并已ACK过的片段序列,滑窗右侧是尚未发送的片段序列。滑窗中的片段(比如片段5,6,7)被发送出去,并等待相应的ACK。如果收到片段5的ACK,滑窗将向右移动。这样,新的片段从右侧进入滑窗内,被发送出去,并进入等待状态。在接收到片段5的ACK之前,滑窗不会移动,即使已经收到了片段6和7的ACK。这样,就保证了滑窗左侧的序列是已经发送的、接收到ACK的、符合顺序的片段序列

应用层

将字节流数据通过HTTP,FTP,SMTP等协议转换为能够识别的格式,json,xml等。

应用层工作就是定义数据并按照对应格式进行解析

数据如何传输

当你输入一个网址并按下回车键的时候,首先,应用程序对该请求包做了格式定义;紧接着传输层协议加上了双方的端口号,确认了双方通信的应用程序;然后网络协议加上双方IP地址,确认了双方的网络位置;最后链路层协议加上双方的MAC地址,确认了双方的物理位置,同时将数据进行分组,形成数据帧,采用广播形式,通过传输介质发送到对方主机