1、TCPTCP是一种面向连接的可靠字节流协议。端到端通信。如果IP数据包中已经有密封的TCP数据包,那么IP会将它们“向上”发送到TCP层。TCP对数据包进行排序并进行错误检查,同时实现虚电路之间的连接。序列号和确认包含在TCP数据包中,因此可以对乱序接收的数据包进行排序,并且可以重新传输损坏的数据包。TCP将它的信息发送给更高层的应用程序,如Telnet的服务程序和客户程序(即应用层)。应用程序依次将信息发送回TCP层,然后将它们向下传递到IP层、设备驱动程序和物理介质,最后传递到接收方。TCP的滑动窗口的发送方和接收方都维护着一个数据帧序列,称为窗口。发送方的窗口大小由接收方确认。目的是控制发送速度,避免接收方缓冲区不足导致溢出。同时,控制流量也可以避免网络拥塞。一般来说,滑动窗口是一种流量控制技术。滑动窗口示例:首先,第一次发送数据时的窗口大小是根据链路带宽确定的。我们假设此时窗口大小为3。这时候接收方接收到数据后,会对数据进行确认,并告诉发送方下次我要获取多少数据。这里我们看到接收方发送的ACK=3(这是发送方对发送的sequence2的确认,接收方期望下次收到3-sequence的信号)。这时候发送方收到这个数据后就知道对方只收到了我第一次发送的3个数据中的2个。已知对方没有收到第三数据。下次发送时,从第三个数据开始发送。此时窗口大小变为2。所以发送方发送2个数据。看到receiver发送的ACK是5,说明他下次期望收到的数据是5,sender就知道我刚刚发送的2个数据已经被对方收到了。这时,第5个数据会被发送。这就是滑动窗口的工作机制。当链路变得更好或更差时,窗口将发生变化。谈判完成后也不是第一次,永远不会改变。所以滑动窗口协议是TCP使用的一种流量控制方式。该协议允许发送方在停止并等待确认之前连续发送多个数据包。由于发送方不必在每次发送数据包时都停下来等待确认,因此该协议可以加快数据传输速度。TCP三次握手SYN泛洪攻击但是TCP三次握手有一个缺陷,就是如果我们利用三次握手的缺陷来进行攻击。这种攻击是SYN泛洪攻击。三次握手中还有第二次握手。服务器响应客户端的请求。需要客户端的IP才能响应请求。服务器需要知道客户端的IP。攻击者伪造此IP并将其发送到服务器。第一次握手的内容,第一次握手的clientIP是伪造的,所以服务端忙于第二次握手但是第二次握手当然没有结果,所以拖累了服务端,crashedTCPwavestheclient四次结束进程发送连接释放消息并停止发送数据。释放数据报文头,FIN=1,其序号为seq=u,客户端进入FIN-WAIT-1(终止等待1)状态。服务器收到连接释放报文,发送确认报文,ACK=1,ack=u+1,并带上自己的序列号seq=v,此时服务器进入CLOSE-WAIT(关闭等待)状态。但是如果服务端发送数据,客户端还是要接受的。这个状态会持续一段时间,也就是整个CLOSE-WAIT状态的持续时间。(客户端收到服务器的确认请求后,此时,客户端进入FIN-WAIT-2(终止等待2)状态)服务器发送完最后一个数据后,向客户端发送连接释放消息,FIN=1,ack=u+1,服务端进入LAST-ACK(最终确认)状态,等待客户端的确认。客户端收到服务器的连接释放报文后,必须发送确认,ACK=1,ack=w+1,客户端进入TIME-WAIT(时间等待)状态。注意此时TCP连接还没有被释放,客户端在2??MSL(MaximumSegmentLifetime)后撤销对应的TCB后必须进入CLOSED状态。2.UDPUDP是一种无连接、不可靠的数据报协议。UDP数据包括目的端口号和源端口号信息。由于通信不需要连接,可以实现广播传输。UDP通信不需要接收方确认,是一种不可靠的传输,可能会出现丢包的情况。在实际应用中,需要程序员对编程进行验证。端口号数据链路中的地址和IP分别指的是MAC地址(MAC地址是网卡的地址)和IP地址。前者用于标识同一链路中的不同计算机,后者用于标识TCP/IP网络中互连的主机和路由器。还有一个类似传输层地址的概念,就是端口号。端口号用于标识在同一台计算机上通信的不同应用程序。因此,也称为程序地址。HTTP请求发送过程一个完整的http请求的七个过程1.建立TCP连接(之前可能有DNS域名解析)2.客户端向服务器发送请求命令3.客户端发送请求头信息4.服务器发送请求给客户端返回响应;例如:HTTP/1.1200OK响应的第一部分是协议的版本号和响应状态码5.返回响应头信息6.服务器向客户端发送数据7.服务器关闭TCP连接Http请求协议消息结构请求消息结构:返回消息结构:
