引入之前网络笔记第一章的内容
OSI的核心思想 --- 分层
属于同一层面的不同功能,其目的和作用是相似或者相近的;属于不同层面的不同功能,其目的和作用存在明显的差异。每一层都在下层的基础上提供增值服务,最上层提供的是人机交互的应用服务。
作用:
1,更易标准化
2,降低层次之间的关联性,层次之间可以独立发展
3,更易学习或理解
相比于OSI的协议,存在部分需要优化的地方,比如(应用层,表示层,会话层 可以整合为应用层),降低了层次之间的关联性。
但是相比于四层协议 把物理层和数据链路层结合在一起,在实践和理论中存在无法区别的问题(数据链路层传输的单元为光/电信号,而物理层传输的单位为电信号。
所以称:TCP/IP四层模型 --- TCP/IP标准模型 TCP/IP五层模型 --- TCP/IP对等模型
PDU --- 协议数据单元
L1PDU 应用层 ---- 报文
........
L4PDU 传输层 ---- 段
L5PDU 网络层 ---- 包
L6PDU 数据链路层 ---- 帧
L7PDU 物理层 ---- 比特流
以太网的二型帧
Type ---- 表示上层所使用的协议类型
应用层 --- HTTP tcp 80 --- 超文本传输协议 --- 提供浏览网页服务的
HTTPS TCP 443 --- HTTP + SSL(TLS)(安全传输协议)
FTP TCP 20/21 --- 文件传输协议 --- 提供互联网文件资源共享服务
TFTP UDP 69 ---- 简单文件传输协议
Telnet TCP 23 ---- 远程登录标准协议 --- 提供远程管理服务
SSH TCP 22
Dns UDP/TCP 53 ---- 域名解析协议
DHCP UDP 67/68 --- 动态主机配置协议
TCP和UDP协议:
1,TCP是面向连接的协议,而UDP是无连接的协议
2,TCP协议传输时可靠的,而UDP协议传输是“尽力而为”
3,TCP可以进行流控,而UDP不行
4,TCP可以进行数据分段,而UDP不行
5,TCP耗费资源比较大,传输速度比较慢;UDP耗费资源比较小,传输速度快
TCP和UDP的应用场景:
TCP适用于效率要求较低,但是对准确性要求较高的场景;UDP适用于对效率要求较高,但是对准确性要求较低的场景(即时类通讯软件)
面向连接:在数据传输之前,先使用预备的协议建立点到点的连接,然后再传输数据的过程
TCP报文:
TCP --- 可变长头部
seq序号,ack确认序号(长度分别为为4个字节)用于确保TCP的三次握手和四次挥手
首部长度:数据偏移,4位,该字段的值是TCP首部(包括选项)长度除以4。
指针标志符意义:
URG:紧急指针(一般置为0,用于紧急的数据传输,与后面的 紧急指针联用)
ACK:用于确定回复信息
PSH:表示有数据在传输
RST:数据复位信息标识符(用来异常的关闭连接,强制关闭,不需要ack确认)
SYN:TCP连接的建立成功
FIN:TCP连接的终结标识符,表示结束连接
滑动窗口大小:用于表示数据最大的传输单元,一般用于确认数据最大的传输的大小,有可容纳性,具体使用:数据传输时,在以及建立TCP协议后,开始传输数据,此时A发送一个定量的数据,如果B回复的可以接受这么多的定量数据,那么A会增加数据量,直到B不能接受那么多的数据量以后(此时B会发送ACK信息,ACK为等待开始接受的数据值,此时A继续发送信息,从ACK开始接受的数据开始发送)滑动窗口为2个最大字节不定长。
校验和 --- 确保数据的完整性 --- 伪头部校验 --- 将网络层封装的的12个字节的内容一起进行校验:32位源IP地址,32目标IP地址,8位协议号,8位保留,16位的报文长度
紧急指针:和前面的标识符URG一起使用,指针指向为紧急需要传输的数据值开始的数值
一个TCP数据最小的传输的数据单元为20字节。
相较于TCP传输数据,UDP则相对于简单许多
UDP报文:
UDP的报文数据只有(源和目标端口号),和UDP长度与校验核
所以一个UDP数据的最小单位为8个字节
TCP和UDP数据传输协议的最大区别在于TCP需要建立可靠的面向连接(三次握手和四次挥手)
三次握手和四次挥手
客户端向服务器发送开始传输数据的请求(SYN=1,sqe=X)sqe为x的意思是数据的序号为X
此时服务器回复客户端数据,为一个确认请求序列号(ack和syn(此时数据帧都指向1) ,回复数据还包括一个ack(x+1)和一个sqe为Y的信息 )
回复ack和syn为1的意思是可以接受信息的回复
回复ack(x+1)的意思是可以接受从ackX的数据后的一个数据(x+1),sqe为回复数据
在收到服务器回复的数据后,客户端回复一个ack为1和sqe为1的指令,并开始传输J+1的是数据
客户端向服务端发送结束连接包FIN置1,并发送客户端数据seq=i
服务单向客户端发送收到信息,并发送服务端数据seq=j与开始接收ACK(i+1)数据(此时为服务端向客户端发送数据)
在服务端发送完数据后,发送FIN和ACK请求,并发送最后一段要发送的数据k,和接受i+1的ACK
此时客户端回复同意关闭请求,并发出最后一个i+1的seq包和请求k+1的ack包(此时服务端不再回复)
为什么握手要三次而挥手要四次,其实客户端发送挥手请求时,此时客户端的数据以及发送完毕,而服务器端仍然有数据要发送,直到服务端数据发送完毕时,服务端发送最后一个数据包FIN,此时客户端发送ACK信息,服务端才会关闭。而建立连接不需要进行数据传输!!!
数据的报文格式
TTL生存时间 0-255,默认进过一个路由器减一,防止环路,当TTL值减到0时,数据包将
不会被路由器转发,将直接丢弃。
协议号 标识上层协议
TCP 6 UDP 17 OSPF 89 ICMP 1
ip分片
MTU --- 最大传输单元 --- 1500字节(一个数据段的最大长度,物理层最大的传输单元)
MSS --- 最大段长度 --- 1460(MSS不包含TCP及IP的协议头长度)
需要协商,当两方不同时,将按照小的一方执行(再三次握手中的前两次SYN包中进行协商