预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

TCPIP传输层 TCP/IP传输层 TCP:传输控制协议,是TCP/IP参考模型的传输层协议。那么关于TCP/IP传输层,你懂多少?下面跟yjbys小编一起来学习吧! 一、传输层的主要功能是什么? 分割并重新组装上层提供的数据流,为数据流提供端到端的传输服务 二、传输层如何区分不同应用程序的数据流? 因为,对应传输层而言,它只需要知道目标主机上的哪个服务程序来响应这个程序,而不需要知道这个服务程序是干什么的。因此,我们只需要能够抽象的表示出来这些应用程序和服务程序即可。我们使用端口号来抽象标识每个网络程序。 传输层的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 /net/ipv4/tcp.c  八、TCP是否真的有链接? 我们都知道,TCP通过完成三次握手来建立链接的,但是这种连接是面向虚电路的,是物理上