C# Socket网络编程(三)

本文介绍了C#中的Socket/TCP编程,详细讲解了TCP报文格式、三次握手和四次挥手的过程。通过三次握手建立连接,包括客户端SYN、服务器SYN+ACK、客户端ACK的交互。四次挥手则涉及双方的FIN和ACK报文,以确保连接的稳定关闭。同时,文章提到了SYN攻击和TIME_WAIT状态的意义。
摘要由CSDN通过智能技术生成

目录

Socket/TCP

TCP报文格式

TCP三次握手

四次挥手

三次握手和四次挥手面试问题

Socket编程

Socket编程方式

数据传输方式

服务器编写步骤

客户端编写步骤


Socket/TCP

TCP报文格式

TCP是一种协议

报文:报纸文字

TCP报文是发送网络消息需要按照这种报文的格式去包装数据

例如:

TCP规定的数据包格式:

亲爱的[xxx],你好,[XXXXX],保重勿念![xxxx]年[xx]月[xx]日。

那么按照TCP发送一句话:“I Love You”,则这句话必须按照上面的协议类型包装

亲爱的[小明],你好,[I Love You],保重勿念![2020]年[03]月[27]日。

 

一般需要了解一下几个字段:

  1. 序号:Seq序号,占32位,用来表示从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标识

  2. 确认序号:ACK序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ACK=Seq+1

  3. 标志位共六个:URG、ACK、PSH、RST、SYN、FIN含义:

    1. URG:紧急指针

    2. ACK:确认序号有效

    3. PSH:接收方应该尽快将这个报文交给应用层

    4. RST:充值连接

    5. SYN:发起一个新连接

    6. FIN:释放一个连接

  4. 需要注意的是:

    (A)不要将确认序号Ack与标志位中的ACK搞混了。 (B)确认方Ack=发起方Req+1,两端配对

TCP三次握手

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server&#x

光盘内容及其使用 __________________________________________________________________ 目录内容: 在此光盘存储了书所有的10个程序的源代码,同一章节的程序 代码存储在同一目录下,例如第9章的程序例程分布式数据库被存储 在光盘的“第9章”子目录下,进入该子目录,就可以看到MyDDB 的程序目录。 使用方法: 在项目的Debug目录存储着相应程序的可执行文件,您可以直接执行 该文件来观察程序的执行效果。 如果希望编译、链接、调试该程序,就必须将该项目拷贝到本地硬盘上。 如果当前的操作系统安装了Visual C#.NET,双击项目的*.sln文件 就可以在Visual C#.NET的集成开发环境打开该项目。接下来按照书 章介绍的方法就可以编译、链接、调试、运行该项目文件。 您也可以通过文本编辑器打开项目的代码文件和头文件,但这样无法 将项目看作一个有机的整体,很难收到良好的学习效果。 系统支持: Visual C#.NET对系统的要求较高: 如果希望在本地机器上安装Visual C#.NET建议使用主频为600以上的CPU, 至少要达到450以上。 操作系统应该是Microsoft Windows XP Professional、Microsoft Windows 2000 Professional、Microsoft Windows 2000 Server、Microsoft Windows NT 4.0 Workstation或者Microsoft Windows NT 4.0 Server。 对内存的要求则是Windows XP Professional:160 MB RAM,建议使用192 MB; Windows 2000 Professional:96 MB RAM,建议使用128 MB; Windows 2000 Server:192 MB RAM,建议使用256 MB; Windows NT 4.0 Workstation:64 MB RAM,建议使用96 MB; Windows NT 4.0 Server:160 MB RAM;建议使用 192 MB。 在缺省情况下,硬盘上的系统驱动器至少要有600MB的空间,Visual C++.NET所 要安装的驱动器上至少要有2G空间。 注意事项: 关于本书的第九章的例程,分布式数据库: 可执行文件的运行步骤: (1) 将bj、gz、sh目录分别拷贝到台不同的机器(A,B,C)。假设bj在A机器上,gz在B机器上,sh在C机器上。每个目录下都有名称相同的个文件,为:bServer.dll,ddb.mdb和DdbView.exe; (2)修改每台机器上的ddb.mdb文件。为此用户需要安装有Microsoft Access2000或更高版本。在上面的假设情况下,将ddb.mdb内的Location表的内容修改如下: 字段 值 北京 A机器IP(字符串形式,如192.100.0.1) 广州 B机器IP(字符串形式,如192.100.0.2) 上海 C机器IP(字符串形式,如192.100.0.3) (3) 启动每台机器上的DdbView.exe; (4) 个DdbView程序对话框都弹出来后,点击每个DdbView对话框上的“初始化”按键; (5) 等待所有的DdbView都初始化完成(在每个对话框的标题上出现相应的地点提示,如A机器上的DdbView会出现“北京”后初始化才算完成); (6) 执行查询。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值