tcp的三次握手和四次挥手(代码片段)

sayiqiu sayiqiu     2023-02-01     570

关键词:

采用两次握手,那么若Client向Server发起的包A1如果在传输链路上遇到的故障,导致传输到Server的时间相当滞后,在这个时间段由于Client没有收到Server的对于包A1的确认,那么就会重传一个包A2,假设服务器正常收到了A2的包,然后返回确认B2包。由于没有第三次握手,这个时候Client和Server已经建立连接了。再假设A1包随后在链路中传到了Server,这个时候Server又会返回B1包确认,但是由于Client已经清除了A1包,所以Client会丢弃掉这个确认包,但是Server会保持这个相当于“僵尸”的连接。
所以采用两次握手,有可能会浪费Server的网络资源。

#coding:utf-8
from socket import *
import time
serverSocket = socket(AF_INET, SOCK_STREAM)
PORT = 8889  #选用的端口号
server_name = "uestc_crs/0.1" #服务器名称和版本号
serverSocket.bind((‘‘, PORT))
serverSocket.listen(5)
while 1:
    print("The webserver is ready to receive")
    connectionSocket, addr = serverSocket.accept()
    try:
        message = connectionSocket.recv(2048)
        filename = message.split()[1].decode() #提取请求报文中的请求对象
        print(filename)#测试得到的请求对象的文件名
        f = open(filename[1:],rb)#以二进制形式打开文件
        outputdata = f.read() #读取服务器上的文件内容
        #发送响应报文首部
        response = ‘‘‘
HTTP/1.1 200 OK
Connection: close
Date: %s
Server: %s
Conten-Length: %s
Content-Type: text/html

‘‘‘%(
    time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()),
    server_name,
    len(outputdata)
    )
        #发送文件,按字节传输
        connectionSocket.send(response.encode())
        connectionSocket.send(outputdata) #一次性将报文实体发送到客户端(浏览器)
        connectionSocket.close()
        
    #请求对象不存在或路径错误时的响应
    except:  #put all possible errors in one case
        print("404 not found")
        response = ‘‘‘
HTTP/1.1 404 Not Found
Connection: close
Date: %s
Server: %s

<h1>File Not Found!</h1>
‘‘‘%(
    time.strftime("%a, %d %b %Y %H:%M:%S GMT", time.gmtime()),
    server_name
    )
        connectionSocket.send(response.encode())
        connectionSocket.close()
serverSocket.close()

 


说说tcp的三次握手和四次挥手(代码片段)

一、传输控制协议TCP简介1.1简介TCP(TransmissionControlProtocol)传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP是一种面向连接(连接导向)的、可靠的基于字节流的传输层通信协议。TCP将用户数据打包... 查看详情

tcp的三次握手和四次挥手(代码片段)

采用两次握手,那么若Client向Server发起的包A1如果在传输链路上遇到的故障,导致传输到Server的时间相当滞后,在这个时间段由于Client没有收到Server的对于包A1的确认,那么就会重传一个包A2,假设服务器正常收到了A2的包,然后... 查看详情

图解tcp的三次握手和四次挥手

文章目录TCP的三次握手与四次挥手三次握手四次挥手其中细节三次握手为什么要有最后一次ACK?四次挥手为什么需要四次挥手?TCP的三次握手与四次挥手三次握手三次握手过程(1)客户端发送一个SYN0给服务器ÿ... 查看详情

图解tcp的三次握手和四次挥手

文章目录TCP的三次握手与四次挥手三次握手四次挥手其中细节三次握手为什么要有最后一次ACK?四次挥手为什么需要四次挥手?TCP的三次握手与四次挥手三次握手三次握手过程(1)客户端发送一个SYN0给服务器ÿ... 查看详情

揭秘——tcp的三次握手和四次挥手

...言本文以博主在某次前端面试中被问到“什么是TCP协议中的三次握手和四次挥手?”为契机,经过整理教材、百度百科以及他人博客,再结合博主自身的理解,尽可能的以通俗易懂的语言来解释TCP协议中的三次握手和四次挥手的... 查看详情

tcp协议的三次握手和四次挥手

TCP协议的三次握手和四次挥手一.过程总览  建立TCP连接需要三次握手,而断开连接则需要四次挥手,整个过程如下图所示:二.报文细节2.1建立连接的三次握手报文细节  首先Client端发送连接请求报文,Server段接受连接后回... 查看详情

tcp协议中的三次握手和四次挥手(图解)

三次握手   四次挥手  查看详情

tcp协议tcp的三次握手和四次挥手

文章目录前言TCP连接的三个阶段TCP数据报介绍TCP三次握手(Three-wayHandshake)三次握手的过程握手过程说明为什么需要三次?两次握手会发生什么问题?数据传输TCP四次挥手四次挥手的过程挥手过程说明握手需要三次,为... 查看详情

tcp协议tcp的三次握手和四次挥手

文章目录前言TCP连接的三个阶段TCP数据报介绍TCP三次握手(Three-wayHandshake)三次握手的过程握手过程说明为什么需要三次?两次握手会发生什么问题?数据传输TCP四次挥手四次挥手的过程挥手过程说明握手需要三次,为... 查看详情

tcp的协议格式以及三次握手和四次挥手(代码片段)

TCP详解目录:一.TCP协议格式二.面向连接的三次握手/四次挥手1.三次握手2.四次挥手三.TCP连接保活机制四.相关面试题理解1.为什么握手是3次,挥手是四次?2.TCP三次握手失败后会如何进行处理?3.TIME_WAIT的应用?4.一个主机上出现了大量... 查看详情

tcp的协议格式以及三次握手和四次挥手(代码片段)

TCP详解目录:一.TCP协议格式二.面向连接的三次握手/四次挥手1.三次握手2.四次挥手三.TCP连接保活机制四.相关面试题理解1.为什么握手是3次,挥手是四次?2.TCP三次握手失败后会如何进行处理?3.TIME_WAIT的应用?4.一个主机上出现了大量... 查看详情

tcp协议的三次握手和四次挥手

TCP协议的三次握手和四次挥手我们知道,TCP是主机对主机层的传输控制协议,提供可靠的连接服务,需要三次握手建立连接,而终止一个连接要经过四次挥手。三次握手第一次握手:客户端申请连接(SYN=1),发送seq=x的数据包,等... 查看详情

tcp的三次握手和四次挥手

TCP(TransmissionControlProtocol) 传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。 TCP在传输之前会进行三次沟通,一般称为“三次握手”(Three-WayHandshake),传完数据断开的时候要进行四次沟通,一般... 查看详情

tcp的三次握手和四次挥手

...向服务端请求数据的过程中,如果是TCP协议,则需经历TCP的三次握手和四次挥手,其中具体的过程如下:  三次握手    这个过程其实就是确认对方的收发功能是否都正常的功能,形象表示如下:    这就好比我们在... 查看详情

tcp协议中的三次握手和四次挥手

 转自:   http://blog.csdn.net/whuslei/article/details/6667471/  建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:  查看详情

tcp的三次握手和四次挥手

...特点或者说目的就是建立可靠的双工通信。也就是说所谓的三次握手和四次挥手都是为了这个目标服务的。1.1.1三次握手主机A向主机B发送TCP连接请求数据包,其中包含主机A的初始序列号seq(A)=x。(其中报文中同步标志位SYN=1,ACK... 查看详情

tcp的三次握手和四次挥手

TCP建立连接三次握手和释放连接四次握手  本文转载于:http://blog.csdn.net/guyuealian/article/details/52535294    在谈及TCP建立连接和释放连接过程,先来简单认识一下TCP报文段首部格式的的几个名词(这里只是简单... 查看详情

tcp的三次握手和四次挥手

详情参考:https://www.cnblogs.com/Jessy/p/3535612.html位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequencenumber(顺序号码)Acknowledgenumber(确认号码)& 查看详情