02 | 网络编程模型:认识客户端-服务器网络模型的基本概念
该思维导图由 AI 生成,仅供参考
客户端 - 服务器网络编程模型
- 深入了解
- 翻译
- 解释
- 总结
网络编程模型中的客户端-服务器模型是一种常见的架构,客户端向服务器发送请求,服务器处理请求并返回响应。TCP和UDP是常用的通信协议,TCP建立连接,服务器端监听端口等待连接,而UDP则是无连接的。IP地址和端口号唯一确定连接,而子网掩码用于划分网络。文章还介绍了保留网段的概念,以及如何使用子网掩码进行网络划分。这些概念对于理解网络编程和网络架构非常重要。 文章还介绍了全球域名系统(DNS)的作用,以及数据报和字节流在TCP/IP协议栈中的应用。TCP提供可靠的、双向连接的通讯串流,而UDP则在速度和经济性方面得到广泛应用。此外,文章还提到了广播或多播技术中选择UDP的合适性,以及UDP在一定程度上可以实现更高的可靠性。 总结来看,本文主要介绍了客户端-服务器网络编程模型、IP地址、端口、子网掩码和域名等基础概念,以及TCP和UDP的特点和应用场景。读者需要重点关注网络编程中客户端和服务器的不同方法和框架,以及TCP和UDP的区别和适用场景。文章还提出了一些思考题,鼓励读者深入思考和交流讨论。 通过本文,读者可以快速了解网络编程模型的基本概念和常用协议的特点,为进一步学习网络编程技术奠定基础。
《网络编程实战》,新⼈⾸单¥59
全部留言(71)
- 最新
- 精选
- Skrpy置顶“网络地址位数由子网掩码(Netmask)决定,你可以将 IP 地址与子网掩码进行“位与”操作,就能得到网络的值。” 老师这句话体现了子网掩码有什么用 “128 ~ 191.某.某.某” 属于 B 类网络;“192 ~ 223.某.某.某” 属于 C 类网络。(这里老师可以把 A、B、C 类网的网段区间说明一下) (一)172.16.0.0/12: 172.16.0.0 和 1111 1111.1111 0000.0.0(12个连续的 1 的子网掩码,也称 CIDR 地址掩码) 进行“与”操作后,得到网络地址的值:172.0.0.0;B 类网络中,网络号从左到右占 16 位,即 172.16(172.0000 1111)为网络号,故从 172.0000 1111 ~ 172.1111 1111 共有16个连续的 B 段网。 (二)192.168.0.0/16: 192.168.0.0 和 1111 1111.1111 1111.0.0(16个连续的 1 的子网掩码)进行“与”操作后,得到网络地址的值:192.168.0.0;C 类网络中,网络号从左到右占 24 位,即 192.168.0(192.168.0000 0000)为网络号,故从 192.168.0000 0000 ~ 192.168.1111 1111 共有 256 个连续的 C 段网。
作者回复: 非常棒的建议和总结。子网掩码定义了一个网络段共同的部分,这个是我的理解
2019-08-0538 - 莫珣置顶172.16.0.0/12,首先172表明这是这个B类网络,12表示子网掩码从左往右有12个1,可以得出网络地址是172.16,但B类网络的网络地址一共有16位,所有还有4位是可以0和1任意组合的,所以总得意思就是说在172.16这个网络地址下面你还可以划分出15个局域网,那么加上172.16自己,刚好就是16个连续的B段网络。192.168.0.0/16的理解过程和172.16.0.0/12是一样的。 端口选择,服务端端口是用一个unsigned short来表示的,理论上服务端选择端口只要在这个短整型的表示范围内即可。知名服务端软件的默认端口本身是一种建议而非规范,但是因为它们太有名了,慢慢的就变成了一种约定俗成的东西。如果你在部署的时候给改变了这个默认端口,那么你就需要告诉客户端你部署时使用的端口是什么。 如果是你自己开发的服务端,那么端口号尽可能的不要与这些知名软件的端口冲突。当然你是不可能记住每一个软件的端口,所以你必须在你的文档中说明你所选择的默认端口是什么。并且你还需要将监听端口设计为可配置的,以便在端口冲突时为你的客户提供一个简单易行的解决方案。
作者回复: 总结的很棒
2019-08-0525 - 剑衣清风置顶172.16.0.0/12 中得出信息,172.16.0.0 为 B 类网,12 为网络号,默认 B 类网的网络号是 2*8=16 位,而此处为 12 位,那么便有 2^(16-12) = 16 个连续子网 相应的 192.168.0.0/16 ,192.168.0.0 为 C 类网,16 为网络号,默认 C 类网的网络号是 3*8=24 位,而此处为 16 位,那么便有 2^(24-16) = 256 个连续的子网 大家可以看看 趣谈网络协议,里面有介绍,另外 https://blog.csdn.net/molaifeng/article/details/88109717 为我结合所学及网络参考所成的博文,可以参考下
作者回复: 总结的不错,这个部分还是蛮重要的
2019-08-05336 - a、置顶1.172.16.0.0~172.31.255.255,因为b类网络的host只占最后两个字节,172.16~172.31就代表了16个连续的b类网络可用 2.192.168.0.0~192.168.255.255,因为c类网络的host只占最后一个字节,所以从192.168.0到192.168.255,就有256个连续的c类网络可用 3.服务器可以监听的端口有从0到65535,理论上这台服务器的这个端口只要没被占用,你都可以给服务器绑定。 4.如果是一些默认的服务,服务器绑的也是默认的端口,那么客户端是可以知道的。比如:80是给http服务,443是给https服务,21是给ftp服务等。否则的话,就需要服务器开发者告诉客户端应该连接哪个端口
作者回复: 给你点赞
2019-08-054155 - Eglinux”Stream sockets 是可靠的,双向连接的通讯串流。⽐如以“1-2-3”的顺序将字节流输出到套接字 上,它们在另⼀端⼀定会以“1-2-3”的顺序抵达,⽽且不会出错。“ 这里还是要分层的吧,在应用层可以说是顺序到达的,那是因为传输层干了活,但是传输层收到包就不一定是顺序到达的了。
作者回复: 是这样的,因为TCP就是传输层协议,就是它帮我们做到顺序的
2019-08-057 - 摸鱼哥无论是原先子网划分还是 CIDR 表示法都应该有 2 个保留地址,全是 0 的网关地址和全是 1 的广播地址,那个 4 个 host 是不是应该只有 2 个
作者回复: 按照道理说,是这样的
2019-08-0826 - 钱老师,IP是自包含区域信息的嘛?比如:中国有台电脑,美国有台电脑,他们都接入互联网有自己唯一的IP,当他们需要通信的时候,寻找彼此,是直接就知道寻找的方向了吧!而不是全世界都找一遍,这个是不是就是路由信息?另外,每个路由器的路由信息是都包括世界上所有的嘛?TCP的长链接是怎么维护的,还是刚才的例子中国的一台机器和美国的一台机器,他们中间隔了许多的网络设备和很远的距离,他们第一次通信和第二次通信,走的路很难想象是一样,距离太远变数太大了,不过我也很难想象他们之间的长链接是怎么维护的,好像有了一条专用通信线路,实际不可能,它怎么实现的?
作者回复: 这些是计算机网络的基础知识,简单的说,这个是通过路由器、交换机,以及IP地址和DNS等一系列网络配套设备和协议一起完成的。建议你找一本计算机网络的书看一下。所谓长链接,并不是一条真正的物理链接,只是从软件实现角度来说,维护了这条通信的一条"逻辑"链路。
2019-11-1934 - 桓我觉得老师对保留网段和子网掩码那部分讲得太晦涩了。本来看之前我还有点懂,看完之后反而不太懂了。这部分缺乏一个比较通俗的例子来说明,而且只字未提网关。平时配置局域网的时候ip,肯定会遇到网关。我看到评论里也有人说这部分看不明白。
作者回复: 网关是一个转发设备,跟我这里的网段和子网掩码其实关系不大,不过实际是把类似192.168.1.1和10.10.101.1这样的ip当做网关使用的。 也许我应该把网关内容加进去的,嗯。
2019-08-2934 - 啦啦的小猪讲的很好啊,期待下来的课程
作者回复: 谢谢,会慢慢进入高潮部分的
2019-08-054 - 王亮平16位整数的ip端口最多为什么不是65535而是65536呢?
作者回复: 整数的编码,0x0001到0xffff,因为端口0是不能用的
2019-08-0843