TCP三次握手及四次挥手过程

三次握手过程:

第一次握手:主机A发送同步位码SYN=1,并产生随机序列码seqnumber,将这些数据包发送到服务器,服务器由A发送过来的同步位码SYN=1知道主机A请求建立到服务器的连接。

第二次握手:服务器知道主机A要建立连接后做出反应,返回确认码ACK=1和确认码序列号,这个序列号是A发送过来的随机序列号加1(seqnumber+1),表示服务器确实收到了信息并且正确。同时服务器还要发送自己的同步位码SYN=1及产生服务器端的随机序列号,将这些数据包返回到主机A,以确认在能收到主机A信息的情况下,主机A能否正确的接受来自服务器的信息。

第三次握手:主机A收到来自服务器的确认信息后,对其发过来的同步位码做出反应,只返回确认码ACK及序列码,这个序列码是来自服务器的随机序列码加1,依此来告诉服务器我能正确接受你发回来的信息。

完成上述过程后,客户端和服务器就建立了正确的连接,这就是一个请求-应答-再次确认的过程

在三次握手连接好服务器后,需要发送一些信息来登录和获取双方的信息:

连接成功后,服务器会返回欢迎信息

220 welcome to ……

完成之后,客户端要依次发送用户名和密码到服务器实现登录。。。这个发送和接收用的是send和recv函数,里面都是绑定好服务器地址和端口的套接字,以及要发送的信息。

首先客户端发送用户名:

USER 用户名

中间有个空格,以回车和换行结尾

服务器对此作出反应,当正确时返回:

331 please specify the password…

然后客户端发送密码过去:

PASS 密码,要求同上。

服务器对发送过来的用户名和密码综合考虑,若正确,返回:

230 Login successful.Have fun…..

若不正确,则返回:

530 Login incorrect…….

这些返回信息,只要判断数字就可以,其他提示可能不同;对正确的连接,服务器返回的数字都是2或3开头的,其他开头的都说明不正确的连接。

要断开与服务器的连接,需要完成四次挥手过程

首先要认识控制位FIN,它代表结束标志,带有该符号的数据包用来结束一个TCP回话,表示我不会再发有用的数据给你了,注意是有用的数据,并不是我啥都不给你发送了。

第一次挥手:客户端A发送结束位FIN及随机序列号到服务器,用来关闭客户端到服务器的数据传输,但是此时服务器依然可以发送数据到客户端

第二次挥手:服务器受到FIN返回确认标志ACK及确认序列号加1,表示我知道了。

第三次挥手:服务器发送一个FIN及序列号给客户端,表示结束数据传输。

第四次挥手:客户端发送确认位ACK报文,并返回确认序列号。

第二次及第三次挥手不放在一块的原因是当时可能有数据没传输完,不能立即做出应答,这就是问什么建立连接要三次握手,而断开连接却要四次挥手。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值