网站大量收购独家精品文档,联系QQ:2885784924

TCPIP传输层,你懂多少.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCPIP传输层,你懂多少

你所不知道的传输层 PS.老规矩,列出可能遇到的20个问题,如果您是都能回答的高手,请您绕道,我是小菜,只做自己的学习笔记。 ? 1.?传输层的主要功能是什么? 2.?传输层如何区分不同应用程序的数据流? 3.?传输层有哪些协议? 4.?什么是UDP协议? 5.?为什么有了UDP,还需要TCP? 6.?什么是TCP协议? 7.?怎么理解协议和程序? 8.?TCP是否真的有链接? 9.?链接是如何建立的(逻辑上)? 10.?所谓的建立TCP链接开销很大,具体是指什么? 11.?三次握手的目的是什么? 12.?TCP如何提供可靠性? 13.?什么是预期确认?什么是肯定确认与重新传输?哪些情况会重传? 14.?TCP中,序列号和应答号有哪些作用? 15.?TCP链接中,网络失败,是怎么判断的? 16.?为什么需要窗口技术? 17.?如何实现流量控制? 18.?UDP的开销很小,具体是指什么? 19.?UDP数据包、TCP数据包大小如何确认? 20.?UDP适合哪些环境?TCP适合哪些环境? ? ? 一。传输层的主要功能是什么? ?分割并重新组装上层提供的数据流,为数据流提供端到端的传输服务。 ? 二。传输层如何区分不同应用程序的数据流? ? 因为,对应传输层而言,它只需要知道目标主机上的哪个服务程序来响应这个程序,而不需要知道这个服务程序是干什么的。因此,我们只需要能够抽象的表示出来这些应用程序和服务程序即可。我们使用端口号来抽象标识每个网络程序。 ? 传输层的TCP和UDP可以接收来自多个应用程序的数据流,用端口号标识他们,然后把他们送给Internet层处理; 同时TCP和UDP接收来自Internet层的数据包,用端口号区分他们,然后交给不同的应用程序。 ? 因此:在同一IP地址(同一个目标主机)上不同的端口号是两个不同的链接。IP地址和端口号用来唯一的确定网络上数据的目的地。 ? 三。传输层有哪些协议? 传输层的两大协议:TCP(传输控制协议)UDP(用户数据包协议) TCP是一个可靠的面向链接的协议,UDP是不可靠的或者说无连接的协议。 可以用打电话和发短信来说明这种关系: UDP就好似发短信,只管发出去,至于对方是不是空号??网络不可到达)能不能收到(丢包)等并不关心。 TCP好像打电话,双方要通话,首先,要确定对方不是开机(网络可以到达),然后要确定是不是没有信号(),然后还需要对方接听(通信链接)。 ? 四。什么是UDP协议? UDP数据包结构如下图所示 ? 源端口(16)目标端口(16)报文长度(16)校验和(16)数据(可变)UDP为应用程序提供的是一种不可靠的、无连接的分组交付,因此,UDP报文可能会出现丢失、乱序、重复、延时等问题。 因为它不提供可靠性,它的开销很小。(开销很小具体指什么?下文揭秘)? 五。为什么有了UDP,还需要TCP? 问题4中已经说到,UDP为应用程序提供的是一种无连接、不可靠的分组交付。当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。 ? 六。什么是TCP协议? ?传输控制协议TCP是一个面向链接的、可靠的通信协议。 1.?在开始传输前,需要进行三次握手建立链接 2.?可靠性:在传输过程中,通信双方的协议模块继续进行通信 3.?通信结束后,通信双方都会使用改进的三次握手来关闭链接 TCP数据包结构如下图 ? 源端口(16)目标端口(16)序号(32)应答号(32)头长度(4)保留(6)编码位(6)窗口(16)校验和(16)紧急(16)可选项(如果有,0或32)数据(可变)? ? **七。怎么理解协议和程序?** 如同我们自定义的应用层协议一样:协议只是给出了一组规范,规定我们应该怎么样(按什么规则)保存数据。 在计算机间传输的永远都是二进制字节码(对于传输层,可以理解为传输的始终是下层的IP数据包),是计算机中的程序通过对这些字节码进行逻辑分析、判断,来控制程序完成差错控制等功能。 至于解析这些字节码的程序,则可以有不同的实现,只要我们按照规则来解析,并作出相应的控制,我们大可以自己写个程序是实现相应功能。 ? 知道了这些后,显然,我们也可以使用前面说的Jpcap,来自己实现一个基于Java的TCP或者UDP协议。可以参考Linux下的Tcp源码。 /net/ipv4/udp.c /net/ipv4/datagram.c? /net/ipv4/tcp_input.c? /net/ipv4//tcp_output.c? /ne

您可能关注的文档

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档