C# Socket网络编程(三)

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

目录

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,

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值