1.OSI七层模型和TCP/IP四层模型,每层列举2个协议
OSI七层模型及其包含的协议如下:
应用层: 为应用程序提供服务,并规定应用程序中通信相关细节。,传输单位为APDU,主要包括的协议为FTP(文件传输协议) HTTP(超文本传输协议)、 DNS(域名系统)
表示层: 对数据进行格式转化(主机特有的格式转化为网络标准传输格式)、加密和压缩,传输单位为PPDU,主要包括的协议为TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption
会话层:通信管理。负责建立、管理和终止会话,传输单位为SPDU,主要包括的协议为RPC(远程过程调用协议) NFS(共享文件协议)
传输层:管理端到端(端口)的数据传输,进行错误恢复和流量控制等,传输单位为数据段(TCP)或数据报(UDP),主要包括的协议为TCP(Transmission Control Protocol传输控制协议) 、UDP(User Datagram Protocol 用户数据报协议)。(端口号使用来识别同一台计算机的不同应用程序的)
网络层:负责地址管理与路由选择,传输单位为IP数据报,主要包括的协议为IP(Internet Protocol 网际互连协议) 、ARP(地址解析协议) 、ICMP(控制报文协议)。
数据链路层: 负责物理层面上互连的节点之间的通信传输。建立逻辑连接、进行硬件地址寻址、差错校验等功能。将IP数据报(比特流,一个帧最大1500字节)组装成帧,传输单位为帧,主要包括的协议为MAC VLAN(虚拟局域网协议) PPP
物理层: 负责比特流与电子信号之间的转换,确定机械及电气规范(使用电缆和接头的 类型传送信号的电压等)。通过媒介传输比特,传输单位为bit,主要包括的协议为:IEE802.3 CLOCK RJ45
注意:传递信息所用的一些物理媒体,如双绞线、同轴电缆、光缆等不在物理层协议之内。而是在物理层协议的下面
TCP/IP 4层模型包括:
网络接口层:MAC VLAN
网络层:IP ARP ICMP
传输层:TCP UDP
应用层:HTTP DNS SMTP(简单邮件传输协议)
2.TCP首部格式
① 源端口号:发送端端口号,长度为16位
②目标端口号:接收端端口号,长度为16位。
③序列号:报文段第一个字节的序号,长度为32位(TCP对传送的数据的每一个字节按顺序标号)
④确认号应答号:下一个报文段第一个字节的序号,长度为32位。
⑤数据偏移:TCP首部长度,单位为4字节,长度为4位。如果TCP报文首部是20个字节,则该位应是20/4=5。
⑥保留位:为了以后扩展时使用。长度为4位,一般设置为0。
⑦控制位:长度为8位
CWR:CWR 标志与后面的 ECE 标志都用于 IP 首部的 ECN 字段,ECE 标志为 1 时,则通知对方已将拥塞窗口缩小;
ECE:若其值为 1 则会通知对方,从对方到这边的网络有阻塞。在收到数据包的 IP 首部中 ECN 为 1 时将 TCP 首部中的 ECE 设为 1.;
URG(Urgent flag)紧急标志位:该位设为 1,表示包中有需要紧急处理的数据,对于需要紧急处理的数据,与后面的紧急指针有关;
ACK(ACKnowledgment flag)确认标志位:该位设为 1,确认应答的字段有效,TCP规定除了最初建立连接时的 SYN 包之外该位必须设为 1;
PSH(Push flag)推送标志位:该位设为 1,表示需要将收到的数据立刻传给上层应用协议,若设为 0,则先将数据进行缓存;
RST(Reset flag)复位标志:该位设为 1,表示 TCP 连接出现异常必须强制断开连接.
SYN(Synchronize flag)同步标志位:用于建立连接,该位设为 1,表示希望建立连接,并在其序列号的字段进行序列号初始值设定;
FIN(Finis flag)结束标志:该位设为 1,表示今后不再有数据发送,希望断开连接。
⑨窗口大小:用于通知发送端,从确认应答号所指位置开始能够接收的数据大小,长度为16 位。TCP 不允许发送超过该窗口大小的数据。若窗口为 0,则表示可以发送窗口探测,以了解最新的窗口大小,但这个数据必须是 1 个字节;
例如,发送了一个报文段,其确认号是701,窗口字段是1000.这就是告诉对方:“从701算起,我(即发送方报文段的一方)的接收缓存空间还可接受1000个字节数据(字节序号是701~1700),你在给我发数据时,必须考虑到这一点。”
⑩校验和:判断首部和数据是否被破坏。TCP在计算检验和时,要加上一个12字节的伪首部,包括:源 IP 地址、目的 IP 地址、填充、协议号以及 TCP 包长度(首部长度与数据长度之和);
TCP首部校验和计算三部分:TCP首部+TCP数据+TCP伪首部。
紧急指针:该字段为 16 位。只有在 URG 控制位为 1 时有效。该字段的数值表示本报文段中紧急数据的指针。从数据部分的首位到紧急指针所在的位置为止是紧急数据。因此,紧急指针是指出了紧急数据的末尾在报文段中的位置;
11、选项(Options)
长度为0-40(字节),必须以4B为单位变化,必要时可以填充0。通常包含:最长报文大小(MaximumSegment Size,MSS)、窗口扩大选项、时间戳选项、选择性确认(Selective ACKnowlegement,SACK)等。
3.UDP首部格式
源端口号:表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源
端口号。没有源端口号的时候该字段的设置为0。可用于不需要返回的通信中。
目标端口号:表示接收端端口,字段长度16位。
包长度:该字段保存了UDP首部的长度跟数据的长度之和(用户数据报长度)。单位为字节。
校验和:校验和是为了提供可靠的UDP首部和数据而设计的。不用时可以设为0.
4.TCP三次握手四次挥手
①三次握手
客户端A:发送请求建立连接报文,标志位SYN=1,序列号为x,进入SYNC-SENT(请求连接)状态。
服务端B:发送确认应答和请求建立连接报文(SYN=1,ACK = 1),序列号为y(seq
= y),确认应答号为 x + 1,进入SYNC-RCVD(连接接受)状态。
客户端A:发送确认应答报文(ACK = 1),序列号为x+1(seq = x + 1),确认应答号为y+1,进入ESTABLISHED(建立连接)状态。服务器B收到后进入ESTABLISHED(建立连接)状态。
⑴为什么要三次握手:
为了实现可靠数据传输,发送方和接收方 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 需要注意的是, 序号并不是从 0 开始的, 而是由发送方随机选择的初始序列号 ( Initial Sequence Number, ISN )开始 。 由于 TCP 是一个双向通信协议&