对于网络问题的总结.doc
《对于网络问题的总结.doc》由会员分享,可在线阅读,更多相关《对于网络问题的总结.doc(15页珍藏版)》请在三一文库上搜索。
1、对于网络问题的总结对于网络问题的总结篇一我的主要科研方向为下一代网络SDN以及云计算中网络研究,但是传统网络发展到如此成熟的一个地步,虽然存在一些问题,不过我们不应该用完美来要求所有东西,传统网络的很多思想和技术都将长远地影响以后的网络发展,这篇文章欲总结一些传统网络中经常会碰到的问题。正文1.为什么不单独的用MAC地址和IP地址来进行数据转发?如果只用MAC地址,也就是说整个网络都处于一个大二层中,都处于同一个广播域中,当世界上成百上千万的机器处于同一个广播域的时候,结果可想而知。如果只是用IP地址,这个问题我只想了下面这种可能性,但是觉得解释上仍然有些不足,希望大神可以不吝赐教。IP地址是
2、由管理者统一分配的,所以在某个机器申请了IP地址之后,不是说这个机器的IP地址确定了,而是这个机器现在所连的这根网线的IP地址确定了,所以只有IP地址的话,如果频繁的更换或者移动机器,每次都需要重新配置机器的IP地址。2.ICMP和IGMP以及ARP和RARP属于IP/TCP协议分层中的哪一层?首先ICMP和IGMP都是IP的附属协议,所以他们有理由都属于网络层,但是在数据包的具体传输过程中,ICMP和IGMP报文都被封装在了IP数据报中。对于ARP和RARP协议来说,也是众说纷纭,有的教材将其划作网络层,有的认为是数据链路层,从逻辑上来说,数据在从上到下进行封装的过程中会加上自己的信息,当网
3、络层的IP包进入链路层时,链路层通过ARP协议添加链路信息,而这不是网络层的功能,所以可以认为是数据链路层,但是从整个网络解析层面来说,ARP和RARP和IP数据报一样,都拥有自己的以太网数据帧类型,所以也可以认为是网络层,所以他们在哪一层并不重要,明白原理最重要,这同时也说明了网络层的划分并不是十分完美的。3.为什么常见的网络应用端口号都是奇数?端口号是用来区分不用应用的,比如我们看着视频聊着QQ,我们都需要使用网络传输数据,所以需要客户端端口号,同样的,对于服务器而言,他要提供多种服务,如何区分这些服务,同样需要的是服务器端口号。如果有注意的话发现常用的、时间比较久远的应用的端口号都是奇数
4、,比如FTP的端口号为21,SNMP为161,Telnet为23。这是为什么呢?因为这些端口号都是从网络控制协议(即TCP前身,ARPANET的传输层协议)派生出来的,原来网络控制协议是单工的,不是全双工的,因此每个应用程序需要两个连接,一个用于接收,一个用于发送,需要预留一对奇数和偶数端口号,当TCP和UDP称为了标准的传输层协议时,每个应用程序只需要一个端口号,所以就使用了原来的网络控制协议中的奇数。总结很多技术的发展都有其深刻的历史烙印,想要精通一门技术,了解其历史是十分重要的。不向静中参妙理,纵然颖悟也虚浮 立乎其大 和而不同 古之成大事者,不惟有超世之才,亦必有坚韧不拔之志对于网络问
5、题的总结篇二对于网络IO,我们一般情况下都需要超时机制来避免进行操作的线程被handle住,经典的做法就是采用select+非阻塞IO进行判断,select在超时时间内判断是否可以读写操作,然后采用非堵塞读写,不过一般实现的时候读操作不需要设置为非堵塞,上面已经说过读操作只有在没有数据的 时候才会阻塞,select的判断成功说明存在数据,所以即使是阻塞读在这种情况下也是可以做到非阻塞的效果,就没有必要设置成非阻塞的情况了.这部分的代码可以参考ullib中ul_sreado_ms_ex和ul_swriteo_ms_ex. % G0 J d: g% C4采用ul_sreado_ms_ex读数据也是
6、不能保证返回大于0就一定读到指定的数据长度, 对于读写操作, 都是需要判断返回的读长度或者写长度是否是需要的长度, 不能简单的判断一下返回值是否小于0. 对于ul_sreado_ms_ex的情况如果出现了发送端数据发送一半就被close掉的情况就有可能导致接收端读不到完整的数据包. errno 只有在函数返回值为负的时候才有效,如果返回0或者大于0的数, errno 的结果是无意义的. 有些时候 会出现read到0, 但是我们认为是错误的情况然后输出errno造成误解,一般建议在这种情况要同时输出返回值和errno的结果,有些情况由于只有errno造成了对于问 题的判断失误。 ; j; W&a
7、mp; H* d6 _长连接和短连接的各种可能的问题及相应的处理 ' N9 C; f! % R& 这里主要是发起连接的客户端的问题,这里列出的问题主要是在采用同步模型的情况下才会存在的问题.短连接: J/ E. u5 V: L采用短连接的情况一般是考虑到下面的一些问题:后端服务的问题, 考虑最简单的情况下一个线程一个连接, 如果这个连接采用了长连接那么就需要我们处理连接的线程和后端保持一一对应,然后按照某些原则进行处理(n对n的关系), 但由于一方面服务器可能增加,这样导致需要前后端保持一致,带来了更多的麻烦,另一方面线程数上不去对应处理能力也会产生影响,而短连接每次连接的时候
8、只 需要关注当前的机器,问题相对会少一些. 其实这个问题可以采用连接池的方式来解决,后面会提到. 不需要考虑由于异常带来的脏数据。负载均衡方面可以简单考虑, 无论线程数是多少还是后端服务器的数量是多少都没有关系, 每次考虑单个连接就可以了. 当然如果负载逻辑简单,并且机器相对固定,一个线程一个长连接问题也不大. 规避一些问题, 在过去有些情况下出现长连接大延时,数据没响应等问题, 测试的时候发现换短连接问题就解决了,由于时间关系就没有再继续追查, 事实上这些问题现在基本上都已经定位并且有相关的解决方案了.不足:效率不足, 由于连接操作一般会有50ns200ns的时间消耗,导致短连接需要消耗更多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对于 网络 问题 总结
链接地址:https://www.31doc.com/p-1490827.html