netty tcp服务端主动断开客户端_网络通信协议之TCP

本文介绍了如何使用Python搭建本地TCP服务器,通过Wireshark分析TCP的三次握手、数据传输和四次挥手过程。文章详细展示了TCP连接建立、数据交换及断开的各个阶段,并提供了服务端和客户端的Python代码示例。
摘要由CSDN通过智能技术生成

奇技指南

笔者最近看了关于Python的部分内容,发现网络编程部分非常容易能够创建一个本地TCP服务器,正好可以用来分析一下TCP的请求和响应过程。
在本篇文章,笔者将给大家介绍下TCP建立连接(三次握手),传输数据,断开连接(四次挥手)的过程。

本文来自公众号360云计算。

TCP简介

  • TCP:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

  • 聊到网络协议,我们常常会想到OSI(Open System Interconnection 开放式系统互联)七层模型、TCP/IP协议簇,她位于OSI、TCP/IP协议簇哪一层等问题。
    如下图OSI七层模型及对应的TCP/IP协议簇所示,TCP位于OSI中的第四层(传输层)。位于TCP/IP协议簇中的第四层(TCP or UDP)。

下图为OSI七层模型及对应的TCP/IP协议簇

6c2af64e4fac22ee501a9da8f3a6841f.png

OSI TCP/IP Family

  • TCP是面向连接的,是指客户端在发送、接收数据之前需要先建立连接,这个连接过程需要三次握手来完成,笔者借助Python搭建了一个本地的TCP服务,并使用Wireshark(Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。)

    捕获了本地的TCP服务器和TCP客户端之间请求响应的过程,带大家一起看一下建立连接(三次握手),传输数据,断开连接(四次挥手)的过程。

本地搭建TCP服务准备工作

笔者在前文提到了要用Python创建一个本地TCP服务器,并且分析TCP的请求响应过程。这里笔者使用的是PythonIDE、Mac自带的终端简单创建了一个本地TCP服务端和客户端。

笔者会分析的过程如下:

-> 创建并且启动一个端口号为20000的TCP服务端
-> 创建客户端并和服务端建立连接(三次握手)
-> 客户端向服务端发送数据'AB'
-> 服务端到数据后给客户端发送数据'AB'
-> 服务端收到数据向客户端发送收到的数据(当前即'AB')
-> 客户端和服务端断开连接(四次挥手)
-> 使用Wireshark对建立连接(三次握手),传输数据,断开连接(四次挥手)的过程进行分析

服务端代码:

Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 03:13:28)

[Clang 6.0 (clang-600.0.57)] on darwin

Type "help", "copyright", "credits" or "license()" for more information.

>>> from socketserver import BaseRequestHandler, TCPServer

>>> class EchoHandler(BaseRequestHandler):

def handle(self):

print('Got connection from', self.client_address)

while True:

msg = self

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值