1. IP地址分类:IPv4
地址全为0的IP:网络ID号
地址全为1的IP:广播地址
A类:-----》十六进制:0.0.0.1 -------- 127.255.255.254
二进制:以0开头,将十六进制转换成了个二进制即可。
B类:-----》十六进制:128.0.0.1---------191.255.255.254
二进制:以10开头,将十六进制转换成了个二进制即可。
C类:-----》十六进制:192.0.0.1---------223.255.255.254
二进制:以110开头,将十六进制转换成了个二进制即可。
D类:-----》十六进制:224.0.0.1---------239.255.255.254
二进制:以1110开头,将十六进制转换成了个二进制即可。
E类(待使用):
二进制:以11110开头,将十六进制转换成了个二进制即可。
2.架构OSI架构
七层架构:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
TCP/IP 五层架构:应用层(包括:应用层、表示层、会话层)、传输层、网络层、数据链路层、物理层。
TCP/IP 四层架构:应用层(包括:应用层、表示层、会话层)、传输层、网络层、物理层(包括:数据链路层和物理层)。
3.TCP/UDP都是协议
TCP: 可靠协议,需要事先连接,数据稳定(不丢包)发送。
UDP:不可靠协议,不要事先连接,直接发送数据,有可能数据丢失。
4.TCP的三次握手(介绍转载于袁仁谷)
原文链接:https://blog.csdn.net/hyg0811/article/details/102366854
第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN。此时客户端处于 SYN_SENT 状态。首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。
第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s)。同时会把客户端的 ISN + 1 作为ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_RCVD 的状态。在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 ESTABLISHED 状态。服务器收到 ACK 报文之后,也处于 ESTABLISHED 状态,此时,双方已建立起了连接。
确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。
4.TCP的四次挥手(介绍转载于袁仁谷)
第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于 FIN_WAIT1 状态。
即发出连接释放报文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN_WAIT1(终止等待1)状态,等待服务端的确认。
第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。
即服务端收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),服务端进入CLOSE_WAIT(关闭等待)状态,此时的TCP处于半关闭状态,客户端到服务端的连接释放。客户端收到服务端的确认后,进入FIN_WAIT2(终止等待2)状态,等待服务端发出的连接释放报文段。
第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。
即服务端没有要向客户端发出的数据,服务端发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),服务端进入LAST_ACK(最后确认)状态,等待客户端的确认。
第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态,服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。
即客户端收到服务端的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),客户端进入TIME_WAIT(时间等待)状态。
此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,客户端才进入CLOSED状态。收到一个FIN只意味着在这一方向上没有数据流动。客户端执行主动关闭并进入TIME_WAIT是正常的,服务端通常执行被动关闭,不会进入TIME_WAIT状态。