学习笔记–sockect之TCP

本文章是仅对socket通讯流程进行文字总结,其中文章中大多内容来之其他博客。

一、什么是socket

首先必须明确socket不是某一层的协议,它是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组编程接口(即API),在设计模式中,socket就是门面模式(又称为外观模式,Facade),它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。总的来说Socket就是一组API,对TCP/IP协议进行封装的API接口

二、socket通讯

学习笔记--sockect之TCP
学习笔记--sockect之TCP

某个应用进程首先调用close主动关闭连接,这时TCP发送一个FIN M;
另一端接收到FIN M之后,执行被动关闭,对这个FIN进行确认。
它的接收也作为文件结束符传递给应用进程,因为FIN的接收意味着应用进程在相应的连接上再也接收不到额外数据;
一段时间之后,接收到文件结束符的应用进程调用close关闭它的socket。这导致它的TCP也发送一个FIN N;
接收到这个FIN的源发送端TCP对它进行确认。

五、使用TCP传输文件

客户端client从服务器server获取文件。流程如下:

服务器server:
1、创建socket,绑定端口,等待客户端连接;
2、建立链接后,打开需要发送的文件,发送文件相关信息(名字、文件长度、每包长度等等),等待接收客户端响应;
3、客户端响应ok后,发送文件数据,逐包发送;
4、发送结束后关闭链接;

客户端client:
1、创建socket,链接服务器;
2、接收文件相关信息,并回复ok;
3、接收数据并写入文件,逐包接收;
4、接收结束后关闭链接;

欢迎技术交流QQ 736009573
参考资料
https://blog.csdn.net/u012501459/article/details/48178065
https://blog.csdn.net/fightsyj/article/details/86251421
https://blog.csdn.net/stone8761/article/details/81027170

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24754 人正在系统学习中

来源:友谊的小床

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月19日
下一篇 2020年8月19日

相关推荐