- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对于网络问题的总结
第 PAGE \* Arabic \* MERGEFORMAT 11 页
对于网络问题的总结
我的主要科研方向为下一代网络SDN以及云计算中网络研究,但是传统网络发展到如此成熟的一个地步,虽然存在一些问题,不过我们不应该用完美来要求所有东西,传统网络的很多思想和技术都将长远地影响以后的网络发展,这篇文章欲总结一些传统网络中经常会碰到的问题。
正文
1.为什么不单独的用MAC地址和IP地址来进行数据转发?
如果只用MAC地址,也就是说整个网络都处于一个大二层中,都处于同一个广播域中,当世界上成百上千万的机器处于同一个广播域的时候,结果可想而知。
如果只是用IP地址,这个问题我只想了下面这种可能性,但是觉得解释上仍然有些不足,希望大神可以不吝赐教。IP地址是由管理者统一分配的,所以在某个机器申请了IP地址之后,不是说这个机器的IP地址确定了,而是这个机器现在所连的这根网线的IP地址确定了,所以只有IP地址的话,如果频繁的更换或者移动机器,每次都需要重新配置机器的IP地址。
2.ICMP和IGMP以及ARP和RARP属于IP/TCP协议分层中的哪一层?
首先ICMP和IGMP都是IP的附属协议,所以他们有理由都属于网络层,但是在数据包的具体传输过程中,ICMP和IGMP报文都被封装在了IP数据报中。
对于ARP和RARP协议来说,也是众说纷纭,有的教材将其划作网络层,有的认为是数据链路层,从逻辑上来说,数据在从上到下进行封装的过程中会加上自己的信息,当网络层的IP包进入链路层时,链路层通过ARP协议添加链路信息,而这不是网络层的功能,所以可以认为是数据链路层,但是从整个网络解析层面来说,ARP和RARP和IP数据报一样,都拥有自己的以太网数据帧类型,所以也可以认为是网络层,所以他们在哪一层并不重要,明白原理最重要,这同时也说明了网络层的划分并不是十分完美的。
3.为什么常见的网络应用端口号都是奇数?
端口号是用来区分不用应用的,比如我们看着视频聊着QQ,我们都需要使用网络传输数据,所以需要客户端端口号,同样的,对于服务器而言,他要提供多种服务,如何区分这些服务,同样需要的是服务器端口号。如果有注意的话发现常用的、时间比较久远的应用的端口号都是奇数,比如FTP的端口号为21,SNMP为161,Telnet为23。这是为什么呢?因为这些端口号都是从网络控制协议(即TCP前身,ARPANET的传输层协议)派生出来的,原来网络控制协议是单工的,不是全双工的,因此每个应用程序需要两个连接,一个用于接收,一个用于发送,需要预留一对奇数和偶数端口号,当TCP和UDP称为了标准的传输层协议时,每个应用程序只需要一个端口号,所以就使用了原来的网络控制协议中的奇数。
总结
很多技术的发展都有其深刻的历史烙印,想要精通一门技术,了解其历史是十分重要的。
不向静中参妙理,纵然颖悟也虚浮 立乎其大 和而不同 古之成大事者,不惟有超世之才,亦必有坚韧不拔之志
对于网络IO,我们一般情况下都需要超时机制来避免进行操作的线程被handle住,经典的做法就是采用select+非阻塞IO进行判断,select在超时时间内判断是否可以读写操作,然后采用非堵塞读写,不过一般实现的时候读操作不需要设置为非堵塞,上面已经说过读操作只有在没有数据的 时候才会阻塞,select的判断成功说明存在数据,所以即使是阻塞读在这种情况下也是可以做到非阻塞的效果,就没有必要设置成非阻塞的情况了.
这部分的代码可以参考ullib中ul_sreado_ms_ex和ul_swriteo_ms_ex. % G0 J d: g% C4采用ul_sreado_ms_ex读数据也是不能保证返回大于0就一定读到指定的数据长度, 对于读写操作, 都是需要判断返回的读长度或者写长度是否是需要的长度, 不能简单的判断一下返回值是否小于0. 对于ul_sreado_ms_ex的情况如果出现了发送端数据发送一半就被close掉的情况就有可能导致接收端读不到完整的数据包. errno 只有在函数返回值为负的时候才有效,如果返回0或者大于0的数, errno 的结果是无意义的. 有些时候 会出现read到0, 但是我们认为是错误的情况然后输出errno造成误解,一般建议在这种情况要同时输出返回值和errno的结果,有些情况由于只有errno造成了对于问 题的判断失误。 ; j; W H* d6 _
长连接和短连接的各种可能的问题及相应的处理 N9 C; f! {% R ] [
这里主要是发起连接的客户端的问题,这里列出的问题主要是在采用同步模型的情况下才会存在的问题.
短连接: J/ E. u5 V: L
采用短连接的情况一般是考虑到下面的一些问题:
后端服务的问题, 考虑最简单的情况下一
您可能关注的文档
最近下载
- 金融法规与银行合规知识考试真题试卷.docx
- 实验室常用玻璃仪器主要用途、注意事项及洗涤方法、洗液配制、干燥、保管方法.pdf VIP
- 2025年全国工会系统经审业务技能大赛知识总题库(1800题)-上部分.docx
- 2025届高考语文复习:诗词默写看图识句+课件.pptx VIP
- 2025年6月21日上海市直遴选笔试真题及解析.docx VIP
- 2023年泰州市高级教师职称考试试题.doc VIP
- 初中体育课中骨折风险规避的综合性防护措施教学研究课题报告[001].docx
- 2025年6月14日阿拉善盟遴选笔试真题及答案解析.doc VIP
- 辅酶Q10pp.ppt VIP
- 苏J25-2006-轻钢龙骨纸面石膏板隔墙.pdf VIP
文档评论(0)