您的位置:首页 > 理论基础 > 计算机网络

渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(4)

2013-10-22 08:37 363 查看
前情回顾:在回顾了网络层的IP协议之后,我们又紧接着进行对网络层其他协议的复习,了解了DNS、ARP、ICMP、DHCP、NAT(NAPT)等辅助性协议的作用以及基本原理。

今天中午起床的时候,突然非常想从现在这份实习中辞职。觉得就算留任也没什么好的,工资低,又不是互联网公司可能学不太到东西。

后来慢慢冷静下来,问自己为什么会想辞职?很大部分原因是部门经理对请假抓得比较严,让我感觉很不自由。另外就是感觉自己现在做的东西没什么意思,是在浪费时间。仔细想想,我这样的想法到底对不对呢?站在经理的角度,员工经常请假肯定是不太能容忍的,哪怕是实习生也是一样。而我呢,前几次请假,也只有一次是为了面试,还有一次是病假。另外两次假都没什么必要,其中还有一次假请了足足一个星期(本来是想着复习去找工作,结果是什么都没干,就光玩了)。另外,我有认真对待过我的工作么,有仔细地从交给我的任务中思考能收获些什么么?

最后告诉自己,还是先别冲动吧。等到自己把自己应该做好的事情都做好了,真的有更好的机会等着自己去把握的时候再考虑。

—————————————————————————————————闲聊结束————————————————————————————

在进行完网络层的回顾之后,马上进入传输层的世界。让我们再看一次传输层的作用:起着可靠传输的作用;只在通信双方节点上进行处理,而无需在路由器上处理。

第五章:面试中的绝代双骄——TCP和UDP

第一节:靠谱的“高富帅”,花无缺——TCP协议(简介)

TCP(Transmission Control Protocol), 传输控制协议,是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管道中的水流。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。

TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提高网络利用率等众多功能呢。

第二节:风一样的男子,小鱼儿——UDP协议(简介)

UDP(User Datagram Protocol),用户数据报协议,是不具有可靠性的数据报协议。细微的处理它会交给上层的应用去完成。在UDP的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。因此,应用有时会根据自己的需要进行重发处理。

第三节:铁心兰的纠结,该选哪个呢——TCP与UDP的区分

一个是高富帅花无缺,虽然闷了点(一副慢吞吞的样子),但是胜在有车有房很可靠;一个是风之子小鱼儿,虽然没那么可靠,但是总能给人带来“快”感(大家千万千万别邪恶了)。铁心兰到底该选择谁呢?真是幸福的烦恼。

TCP用于传输层有必要实现可靠传输的情况,例如文件传输等要求可靠性高的应用。由于它是面向有连接并具备顺序控制、重发控制等机制的,所以可以为应用提供可靠传输。而在另一方面,UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信。例如IP电话进行通话,如果使用TCP,数据如果丢失重发,就会无法流畅地传输声音,会导致正常交流受阻。而采用UDP,不会进行重发处理,即便有偶尔的杂音,也不会有使声音大幅度延迟的情况。此外,在多播与广播通信中也使用UDP而不是TCP。

选男朋友挑老公没有一个绝对的标准,那么选取传输层协议类型也是一样,TCP和UDP应该根据应用过的目的按需选择。(TCP与UDP的区别,是一道非常非常常见的面试题,大家可以在这上面多花点心思)

第四节:传输层的地址——端口号

数据链路层的地址是啥?MAC地址。网络层的地址是啥?IP地址。那么传输层的地址是啥?没错,你是看了标题的人,是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,也被称为程序地址。

一台计算机同时可以有多个程序进行通信,而传输层协议正是利用这些端口号识别本机中正在通信的应用程序,并准确地将数据传输。

TCP/IP或UDP/IP通信中通常采用5个信息来识别一个通信,分别是:源IP地址、目标IP地址、协议号、源端口号、目标端口号。只要有其中一项不同,就会被认为不是同一个通信。

第五节:再讲讲TCP协议

TCP协议中重要的内容非常多,而且涉及的常见面试题也占TCP/IP方面的大头,所以今天就只是简单介绍一下TCP是如何实现可靠性传输的,更多的内容放到明天。

1.通过序列号与确认应答提高可靠性——在TCP中,当发送端的数据到达接收端,接收端主机会返回一个已收到消息的通知,这个消息就是确认应答(ACK)。序列号是按顺序给发送数据的每一个字节(8位字节)都标上号码的编号。接收端查询接收数据TCP首部中的序列号和数据的长度,将自己下一步应该接收的序号作为确认应答返送回去。就这样,通过序列号和确认应答号,TCP可以实现可靠传输。

2.确定重发超时——重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。TCP协议在每次发包时都会计算往返时间及其偏差。将这个往返时间和偏差相加得出来的结果,是一个比重发超时稍小一点的值。

3.连接管理——面向连接,指的是在数据通信开始之前先做好通信两端之间的准备工作。TCP在通信之前,通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答。在通信结束时会进行断开连接的处理(FIN包)。一个TCP连接的建立与断开,正常过程至少需要来回发送7个包才能完成(超级经典的三次握手与四次挥手)。

4.利用窗口控制提高速度——窗口大小指的是无需等待确认应答而可以继续发送数据的最大值。收到确认应答的情况下,将窗口滑动到确认应答中的序列号的位置。这样可以顺序地将多个段同时发送提高通信性能,这种机制也被成为滑动窗口控制(又一经典面试题)。

5.拥塞控制——为了防止一开始就发送一个较大量的数据导致网络愈加拥堵甚至瘫痪,TCP引入一个叫做慢启动的算法对发送数据量进行控制(慢启动,很经典)。

6.捎带应答——根据应用层协议,发送出去的消息到达对端,对端进行处理以后,会返回一个回执。在此类通信中,TCP的确认应答和回执数据可以通过一个包发送,这种方式叫做“捎带应答”(PiggyBack Acknowledgement)。通过这种机制,可以使收发的数据量减少。

第六章:应用层协议概要

第一节:什么是应用层协议

使用网络通信的应用程序有很多很多,包括浏览器、网游、文件传输、网络管理等,能够让这些应用进行特定通信处理的协议就是应用协议。TCP/IP的应用层对应OSI参考模型中的第5、6、7层的所有工恩呢该,不仅包含了管理通信连接的会话层、转换数据格式的表示层功能,还包括与对端主机交互的应用层功能在内的所有功能。

第二节:经典应用简介

1.远程登录——实现从本地计算机登录到网络另一端计算功能的应用就叫做远程登录,使用的主要协议有TELNET(不加密)和SSH(加密)两种。

2.文件传输——FTP是在两个相连的计算机之间进行文件传输时使用的协议。使用两条TCP连接:一条用来控制,另一条用于数据(文件)的传输。

3.电子邮件——提供电子邮件服务器的协议叫做SMTP(Simple Mail Transfer Protocol)。SMTP为了实现高效发送邮件内容,在传输层使用了TCP协议(笔试中的选择题经常能碰到)。另外与电邮相关的协议还有POP与IMAP,有兴趣的童鞋可以进一步了解。

4.WWW万维网——HTTP协议自不必说,里面的内容可以写成一本厚厚的砖头书。简单的说,HTTP中默认使用80端口,工作机制就是:首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP连接上进行请求和应答以及数据报文的发送。

5.网络管理——SNMP用来收集网络设备必要的信息,是基于UDP/IP的协议。SNMP中交互的信息是MIB,是在树形结构的数据库中为每个项目附加编号的一种信息结构;而RMON则是Remote Monitoring MIB的缩写。(MIB由监控网络中某个设备接口(某个点)的众多参数构成,而RMON则由监控网络上线路的众多参数构成)。

TCP/IP协议的回顾基本就到这里。然而,这只是简单地复习一下之前学习过的内容而已,无论是深入理解TCP/IP协议,还是面对笔试面试,都是不够的。明天还会对一些重要的内容进行更加详细的深入探讨,主要是对经典的常见的笔试面试进行举例说明。

————————————————————————————又是我,分割线——————————————————————————————

跟往常一样,还是说上几句:

1.晚上七点的时候睡了一会,起来发现右手貌似有点抽筋,不知道是不是最近码字有点多了,常常一敲就是两三个小时。看来,以后要注意中途多休息几次,按摩按摩下手臂才行。

2.写博客,越写就越觉得自己之前未免太心浮气躁了,总想着一蹴而就,例如一两个星期大半个月就把该复习的东西全部都复习完,然后去笔试面试拿offer什么的。结果呢,草草看了些资料,背了几天就进行不下去了,根本记不住,没效果。还是不要眼高手低,提醒自己脚踏实地,急功近利是不会有什么收获的。

3.实习这段时间,感觉自己在做人做事上都还有很大很大的进步空间。值得庆幸的是,的确是有一点点一点点在进步的,起码今天下午就没有一激动就跑去辞职。

4.感谢那些给我评论加油鼓劲给建议的人,虽然素未谋面素不相识,但是你们还是无形中帮了我很多很多,很多很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: