43 | Socket通信:遇上特大项目,要学会和其他公司合作
刘超
该思维导图由 AI 生成,仅供参考
上一篇预习文章说了这么多,现在我们终于可以来看一下,在应用层,我们应该如何使用 socket 的接口来进行通信。
如果你对 socket 相关的网络协议原理不是非常了解,建议你先去看一看上一篇的预习文章,再来看这一篇的内容,就会比较轻松。
按照前一篇文章说的分层机制,我们可以想到,socket 接口大多数情况下操作的是传输层,更底层的协议不用它来操心,这就是分层的好处。
在传输层有两个主流的协议 TCP 和 UDP,所以我们的 socket 程序设计也是主要操作这两个协议。这两个协议的区别是什么呢?通常的答案是下面这样的。
TCP 是面向连接的,UDP 是面向无连接的。
TCP 提供可靠交付,无差错、不丢失、不重复、并且按序到达;UDP 不提供可靠交付,不保证不丢失,不保证按顺序到达。
TCP 是面向字节流的,发送时发的是一个流,没头没尾;UDP 是面向数据报的,一个一个地发送。
TCP 是可以提供流量控制和拥塞控制的,既防止对端被压垮,也防止网络被压垮。
这些答案没有问题,但是没有到达本质,也经常让人产生错觉。例如,下面这些问题,你看看你是否了解?
所谓的连接,容易让人误以为,使用 TCP 会使得两端之间的通路和使用 UDP 不一样,那我们会在沿途建立一条线表示这个连接吗?
我从中国访问美国网站,中间这么多环节,我怎么保证连接不断呢?
中间有个网络管理员拔了一根网线不就断了吗?我不能控制它,它也不会通知我,我一个个人电脑怎么能够保持连接呢?
还让我做流量控制和拥塞控制,我既管不了中间的链路,也管不了对端的服务器呀,我怎么能够做到?
按照网络分层,TCP 和 UDP 都是基于 IP 协议的,IP 都不能保证可靠,说丢就丢,TCP 怎么能够保证呢?
IP 层都是一个包一个包地发送,TCP 怎么就变成流了?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了在特大项目中如何利用socket进行通信,着重讨论了TCP和UDP两种协议的使用。文章首先解释了TCP和UDP的区别,包括面向连接、可靠交付、流量控制和拥塞控制等特点。接着详细介绍了使用socket函数创建和关闭socket的过程,以及针对TCP和UDP分别进行编程的步骤。对于TCP,包括服务端的监听、连接建立和数据传输的过程;对于UDP,介绍了不需要连接维护的特点,以及发送和接收数据的方法。文章还涉及了网络字节序的问题和三次握手的过程。通过实际的代码和流程介绍,帮助读者了解了在特大项目中如何使用socket进行通信,特别是针对TCP和UDP协议的编程细节。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(22)
- 最新
- 精选
- 莫名『连接功夫在两端,而不在通路。通过两端的底层sock结构体维持状态信息。』老师这句话总结很到位结合socket系统调用的源码分析会更加容易理解。
作者回复: 是的
2019-08-2917 - 程序水果宝为什么要两个socket?
作者回复: 需要两个数据结构保存不同的状态
2019-07-1112 - 韩俊臣撑过进程间通信后,这里终于多少能看懂了
作者回复: 赞
2020-06-144 - kdb_reboot老师厉害了, 依然在更新; 最近我有时间学习这个专栏了, 但是目前只跟到第十课, 把专栏作为引子,每天的阅读量还是很大的 然后, 我有个问题: 专栏更新完老师还会答疑吗?因为进度原因,可能还没学到最后面,专栏已经更新完了
作者回复: 这个专栏比较硬核
2019-07-054 - oldman老师,有个问题,一直没有想明白,希望老师看到之后给解答一下,我知道服务端会维护一个连接的队列,比如这个队列里面是a,b,c,d,e,f,g这个样的多个连接,那当客户端有请求过来,比如说某一个请求过来,服务端是怎么区分他是a还是b或者c对应的连接呢?谢谢。
作者回复: 每个连接都是不同的端口号
2019-08-083 - 潇是潇洒的洒老师我有一个疑问,服务端和客户端都调用 socket,得到文件描述符。这里是服务端和客户端分别打开了不同的文件,然后各自写对方的文件,读自己的文件,还是说打开是同一个文件,读和写。
作者回复: 不同的文件
2019-09-02 - 咖啡猫口里的咖啡猫🐱其实我对tcp和udp的理解就是tcp协议栈由分段maxsegment(握手阶段的附加),自己尽量来处理最大MTU问题,尽量防止ip分片,对端网络层组包,从而导致的tcp应用使用协议需要考虑处理分包,粘包。
作者回复: 可以offload给硬件
2019-07-18 - 安排老师,可不可以在答疑篇,增加一个select,poll,epoll的内核机制分析?2019-07-05565
- 天使也有爱看了趣谈网络协议专栏,在结合这里看,感觉对网络通信知识有了更深的理解2019-09-222
- Allen_这一章解决了我一年都问不到的答案 谢谢老师2021-03-061
收起评论