Linux 网络运维课程知识点目录
♠ 1、掌握难点 TCP/IP协议C/S架构建立连接状态转换
♠ 2、掌握难点 TCP/IP协议C/S架构断开连接状态转换
♠ 3、掌握难点 网络IP地址的划分
♠ 4、掌握难点 子网掩码的划分
♠ 5、掌握难点 子网掩码的补充
♠ 6、掌握难点 DNS解析
♠ 1、掌握难点 TCP/IP协议C/S架构建立连接状态转换
1.1 过程描述
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
1.2 抓包分析
1>客户端发送SYN字段和ISN初始序列号给服务器,并进入了SYN_SEN状态。(掌握)
2>服务器应答,发送(SYN+ACK字段),SYN字段为服务器S的ISN初始序列号给客户端(注 这里的seq与客户端发送的seq没有关系,是服务器自己的seq)。(掌握)
过程如下图
3>客户端发送ACK字段ISN码值为第二次握手时服务器发送的SYN ISN值加1。客户端和服务器端都进入ESTABLISHED状态,连接建立成功!
建立连接成功就可以等待发送和接收数据了。
1.3(掌握)TCP/IP建立连接3次握手状态转换
1>客户端发送FIN ACK字段ISN初始序列值seq释放连接请求。
2>服务器先确认客户端C的FIN请求,并发送ISN seq初始序列值。
3>服务器S向客户端C发送FIN+ACK字段以及ISN值
4>客户端C对服务器S的FIN请求确认
2.3(掌握)TCP/IP断开连接4次握手状态转换详解
(面试宝典)3次握手和4次挥手总结归纳
3.3 TCP数据报文格式
1)源端口号和目的端口号 这个字段均为16位的长度,表示发送端和接收端的端口,用于确认发送端和接收端的应用程序。发送端的IP地址和端口号及接收端的IP地址和端口号可以确认一个在Internet上的TCP连接。
2)序列号 序列号是一个32位长度的字段,表示分配给TCP包的编号。序列号用来表示应用程序从TCP的发送端到接收端发送的字节流。当TCP开始连接的时候发一个序列号给接收端,连接成功后,这个序列号作为初始的序列号ISN(Initial Sequence Number)。建立连接成功后发送的第一个字节的序列号为ISN+1,之后发送数据ISN将按照字节的大小进行递增。序列号是一个32位的无符号数,到达2的32次方减1之后从0开始。
3)确认号 发送方对发送的首字节进行了编号,当接收方成功接收后,发送回接收成功的序列号+1表示确认,发送方再次发送的时候从确认号开始。
4)头部长度 表示TCP头部的长度,由于TCP的数据有可选字段,头部长度用于表示头部的长度。此字段的长度为4位,表示的是以32位长的数据。因此TCP的头部最长为60个字节,如果没有可选字段通常为20个字节。
5)保留位 6位长度没有使用,必须设为0.
6)控制位 6b,用作控制位,可以多个位一起设置。