目录
一. TCP/IP基础知识
应用层
HTTP,SMTP(邮件),
FTP(文件传输)
TLNET,SSH(远程登陆)
SNMP 网络管理
表示层
HTML 属于表示层的内容
MIME(邮件格式)
MIB(网络管理传输数据)
会话层
传输层
- TCP
优点:
- 面向有连接的传输层,可以保证两端通信主机之间的通信可达
- 能够处理在传输过程中丢包,传输数据乱
- 可以有效利用带宽,环节网络拥塞
缺点: - 为了建联与断联,至少需要7次的收包发包,导致流量的浪费,不利于视频会议的等场合使用
- UDP
面向无连接的协议
- 不关心分组数据包是否传到了对端
网络层
包含协议:
- IP
负责将分组数据包转发到目的主机,不具备重发功能,属于非可靠传输协议 - ICMP
一旦分组在转发途中无法到达目的地,就会给发送端发送给一个异常的通知。 - ARP
从分组数据包的IP地址中解析物理地址(MAC地址)
数据链路层
是硬件与操作系统之间的接口,传输的是帧,
物理层
负责传输数据的硬件
负责把二进制的0/1转换为实际的通信媒介传输的数据格式,比如电压的高低,灯光的亮灭,电波的强弱
数据发送/接受流程
用邮件发送早上好的数据流向
接受流程
接受流程是发送的逆序
数据链路层
主机收到以太网包后会从包的首部找到MAC地址,看是否是发送给自己的包,如果不是那么丢弃数据,是的话再查看数据类型,看是IP还是ARP,如果包含了一个无法识别的数据类型那么就丢弃。
IP模块处理
IP模块收到IP数据包后会查询IP地址是否是自己,是的话,查询上层协议,是UDP给UDP是TCP给TCP,如果是路由器一般会需要借助陆游控制表。调查应该送达的主机或者路由器后再转发数据
TCP模块
- 计算校验和,判断数据是否被破坏
- 检查是否按照顺序号接受数据
- 检查端口号 确定具体的应用程序
- 数据接收完毕后,给发送端发送一个确认回执,如果这个信息没到发送端,发送端会认为没法送到而一直发送
应用程序的处理
解析数据 获知收件人地址是谁。不是自己的话,返回一个无此收件地址的报错信息
二. 数据链路层
无线网络
PPP 协议
IP协议
IPV4协议
- 是32位地址
可以表示2^32次方个地址 - IP地址是由网络地址+主机地址
IP地址分类
- A类地址
首位以0开始,前八位是网络地址,后24位是主机地址
0.0.0.0 ~ 127.0.0.0是A类的网络地址,后24位是主机地址 - B类地址
以10开始,前16位是网络地址 - C类地址
以110开头,1~24是网络标识位置后八位是主机地址
192.168.0.0~255.255.255.0 - D类地址
以1110开头,1~32位是网络地址,没有主机表示,常用于多播
224.0.0.0 ~ 255.255.255.255
广播地址
将一个IP地址的主机地址部分全部置为1
网络层
传输层
如何识别一个通信:
必须要 源IP地址,目标IP地址,协议,源端口号 目标端口号 完全相同才是一个通信
TCP
实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制
是一种面向有连接的协议,可以确定通信对端存在才会发送协议,可以控制流量的浪费
实现可靠传输的方式
-
通过序列号与确认应答提高可靠性
在TCP中,发送端的数据到达接收主机的时候,接收端主机会返回一个已收到消息的通知,这个消息叫做确认应答(ACK)
发送端在发送的数据上每一个字节标上序列号,初始是随机生成,然后每一个字节+1,当接收端收到数据时,返回ACK的序号为下一次应该收到的序列号开头 -
超时重发机制
每一次发送都会计算偏差,动态调整超时的时间
默认最小偏差是0.5s ,最小超时是1s
tcp以段为单位发送数据,这个段就是最大数据的发送长度,最好就是在IP中不会被分片处理的最大数据长度。 这个长度在进行建连的时候就确定了。
-
高速重发机制
当发送端接收到某次确认应答时,又连续三次收到重复一样的确认应答时,代表没有发送成功,这时候会重新发送。 -
窗口控制
接收端会在TCP首部中标示自己自己的缓冲区大小,每一次通信都会带上,当接收端处理数据时,发送端会发送一个字节大小的窗口探测的包来获取最新的窗口大小 -
用塞控制
在通信开始的时候,会通过一个慢启动的算法对发送数据量进行控制。初始发送一个段,每次接收到确认应答时,加一个段。发送端维护一个拥塞窗口,每次接收到一个ack,窗口大小加一,发送包的时候会与接收端的窗口大小进行比较,传送比最小的还小的数据。
随着窗口不断增加,发送端会设置一个窗口阈值,超过后就会根据:
一个数据端字节数 * 一个数据端字节数 / 拥塞窗口字节数
不过这个阈值最开始不会设置,只有当触发了超时机制,会设置当前的一半。
提高网络利用率的规范
- 延迟发送ack
接收段可以接收两个段后发送一次ack,目的是减少当 刚接收到数据后,缓冲区满了,会发送一个小的窗口,这样效率又下降了
TCP首部
UDP
全称是 user datagram protocol 这里的user代表的是程序员了
- 常用场景
- 包总量较少的通信(DNS, SNMP)
- 音频,视频等多媒体通信(及时通信)
- 限定于LAN等特定网络中的应用通信
- 广播通信(广播 多播)