TCP建立(三次握手)与断开(四次握手)
来源:互联网 发布:涉密网络 编辑:程序博客网 时间:2024/06/07 23:51
常见的面试题之一
TCP建立(三次握手)
1. Client 首先发送SYN包(syn = i )到 Server端,并进入SYN_SEND状态,等待服务器确认。
2 . Server端收到Client端的syn包后,将会通知Client收到该Syn包(即:发送ack = i +1),同时发送给Client一个Syn包(syn = j),即syn + ack,此时,服务器进入SYN_RECV状态
3。Client收到Server的syn+ack包,同时向Server发送确认包ack (ack = j + 1)
至此,Client和Server进入ESTABLISHED状态,完成三次握手。
TCP断开(四次握手)
1. Client首先向Server端发送fin包(fin = m)
2. Server端收到fin包后,发送确认包ack(ack = m + 1),Client收到Server端的ack后,将会等待server的fin包。
3. Server发送fin包(fin = n)到Client端
4. Client收到fin包,并发送ack = n + 1
之后,Client和Server将断开连接。(在发送fin包之后表示该端不能继续发送数据了,但还可以接受数据)
术语解释:(来自百度百科)
SYN (synchronize):
SYN是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN-ACK应答表示接收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。
TCP连接的第一个包,非常小的一种数据包。SYN 攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。
ACK (Acknowledgement):
在数据通信传输中,接收站发给发送站的一种传输控制字符。它表示确认发来的数据已经接受无误。
在TCP/IP协议中,如果接受方成功的接收到数据,那么会回复一个ACK数据。通常ACK信号有自己固定的格式,长度大小,由接受方回复给发送方。其格式取决于采取的网络协议。当发送方接收到ACK信号时,就可以发送下一个数据。如果发送方没有收到信号,那么发送方可能会重发当前的数据包,也可能停止传送数据。具体情况取决于所采用的网络协议。ACK信号通常是一个ASCII字符,不同的协议中ACK信号都不一样。
TCP报文格式中的控制位由6个标志比特构成,其中一个就是ACK,ACK为1表示确认号有效,为0表示报文中不包含确认信息,忽略确认号字段。
- TCP建立(三次握手)与断开(四次握手)
- TCP连接与断开(三次握手和四次挥手)
- TCP/IP(三次握手和四次断开)与UDP
- TCP的三次握手与四次断开
- TCP三次握手四次断开
- TCP三次握手 四次断开
- TCP三次握手四次断开
- tcp协议的”三次握手“连接与“四次握手”断开
- TCP建立连接的三次握手与断开连接的四次握手
- TCP 三次握手连接&四次握手断开
- tcp/ip 三次握手(建立连接)和四次挥手(断开连接)
- TCP的三次握手(建立连接)和四次挥手(断开连接)
- TCP/IP协议的三次握手和四次挥手(建立连接和断开连接)
- TCP 三次握手建立连接和四次挥手断开连接
- TCP 三次握手四次挥手及理由(二 连接与断开)
- Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
- Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
- Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
- 1753
- 制作文件系统之三:BusyBox init的启动过程
- android性能测试工具之dumpsys
- char*和char[]
- AIR应用场景?
- TCP建立(三次握手)与断开(四次握手)
- 黑马程序员-------网络编程
- Python网络编程的一些代码片断与分析
- .net 后台操作Cookies
- C++ new 和 delete的一些使用见解
- Android UI 优化 [ 类别:Layout ] <merge>的学习
- 每天学一点点--AIX
- ASSERT函数
- IBM大中华区总架构师——话说程序员的职业生涯