传输层——读书笔记《王道考研材料》-简书

传输层
传输层的功用:
传输层是向它上面的使用层供给通讯效能,它归于面向通讯有些的最高层,一起也是用户功用中的最低层。

传输层位于网络层之上,为运转在不一样主机上的使用程序供给逻辑通讯,而网络层供给了主机之间的逻辑通讯。即便网络层的协议是不可以靠的,但传输层仍是能为使用程序供给可靠的效能。

只需主机的协议栈才会有传输层和网络层,而路由器再转发分组的时分都只用到了下三层的功用。(即在通讯子网中没有传输层,传输层只存在于通讯子网以外的主机中)

<font face=”微软雅黑” color=#dc143c size=4 >** 传输层的功用:**</font>

1、传输层供给给用进程之间的逻辑通讯(即端到端的通讯)。与网络层的差异是,网络层供给的是机之间的逻辑通讯。

2、复用和分用。复用是指发送方不一样的使用进程都可以运用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后可以把这些数据正确交给到意图使用进程。

留心:传输层的复用分吃苦能与网络层的复用分吃苦能不一样。
网络层的复用是指发送方不一样协议的数据都可以封装成ip数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交给给相应的协议。

3、传输层还要对收到的报文进行过失检测(首部和数据有些)。而网络层只查看ip数据报的首部,不查验数据有些是不是犯错。

4、供给两种不一样的传输协议,即面向联接的tcp和无联接的udp。而网络层无法一起完成两种协议(即在网络层要么只供给面向联接的效能,如虚电路,要么只供给无联接效能,如数据报,而不可以能在网络层一起存在这两种方法)。
?

端口和端标语:
一、端口的作用:
端口可以让使用层的各种使用进程将其数据经过端标语向下交给给传输层,以及让传输层晓得应当将其报文段中的数据向上经过通端口交给给使用层相应的进程。

端口就是传输层效能造访点tsap,它在传输层的作用类似于ip地址在网络层的作用或mac地址在数据链路层的作用,只不过ip地址和mac地址标识的是主机,而端口标识的是主机中的使用进程。

端标语只具有本地意义,即端标语只是为了标志本核算机使用层中的各进程。在因特网中不一样核算机的相同端标语是没有联络的。
?

二、端标语:
使用进程经过端标语进行标识,端标语长度为16bit,可以标明6536(2^6)个不一样的端标语。

端标语只具有本地意义,即端标语只是为了标志本核算机使用层中的各进程,不一样核算机的相同的端标语是没有联络的。根据端标语规模可将端口分为两类:

<font face=”微软雅黑” color=#dc143c size=4 >1、效能端运用的端标语。</font>

这儿又分为两类,最重要的一类是熟知端标语,数值为0~1023,iana(互联网地址指派机构)把这些端标语指派给了tcp/ip最重要的一些使用程序,让一切的用户都晓得。

另一类叫做挂号端标语,数值为1024~49151。它是为没有熟知端标语的使用程序运用的,运用这类端标语有必要在iana挂号,以避免重复。

一些常用的熟知端标语如下:

<font face=”微软雅黑” color=#dc143c size=4 >2、客户端运用的端标语:</font>

数值为:49152 ~ 65535,因为这类端标语仅在客户进程运转时才动态选择,因而又名时刻短端标语。通讯结束后,方才运用过的客户端标语就不复存在,这个端标语就可以供其他客户进程运用。
?

三、套接字
网络中经过 ip 地址来标明一台主机,经过端标语来区别一台主机中的不一样使用程序。在网络中选用发送方和接收方的套接字组合来辨认端点,所谓的套接字实践上就是一个通讯端点,即:

套接字=(主机 ip 地址 , 端标语)

它仅有的标识了网络中的一个主机和其上的一个使用(进程)
?

无联接效能和面向联接效能:
面向联接的效能就是在通讯两边进行通讯之前,有必要先树立联接,在通讯进程中,整个联接的情况一向被实时地监控和打点。当通讯结束后,则大约开释这个联接。

而无联接的效能,两个实体之间的通讯不需要先树立好联接,需要通讯的时分,直接将信息发送到“网络”中,让该信息的传递在网上极力而为地往且的地传送。

tcp 是一种面向联接的效能,供给可靠的传输效能。然后不可以避免添加了许多开支,如:招认、流量控制、计时器以及联接收理。这不只使协议数据单元的头部增大许多还要占用许多的处置机本钱。

因而tcp首要适用于可靠性更重要的场合,如文件传输协议ftp、超文本传输协议http、远程登录telnet等。

udp 是一种无联接的非可靠传输层协议,它在ip之上仅供给两个附加效能:多路复用和对数据的差错查看。

udp在传送数据之前不需要先树立联接,远程主机的传输层收到udp报文后,不需要给出任何招认。

因为udp比照简略,其实施速度就比照快、实时性好。运用udp的使用首要包括小文件传送协议(tftp)、dns、snmp和实时协议(rtp)。
?
<font face=”微软雅黑” color=#dc143c size=4>留心:</font>

1、ip数据报和udp数据报的差异:

ip数据报在网络层要经过路由的存储转发;

而udp数据报是在传输层的端到端的逻辑信道中传
传输层——读书笔记《王道考研材料》-简书插图
输,而封装成ip数据报在网络层传输时,udp数据报的信息对路由是不可以见的。

2、tcp 和网络层虚电路的差异:

tcp报文段是在传输层笼统的逻辑信道中传输,对路由器不可以见。

虚电路所经过的交流结点都有必要保存虚电路状况信息。

在网络层若选用虚电路方法,则无法供给无联接效能;而传输层选用tcp协议不影响网络层供给无联接效能。
?

udp
udp只是做了传输协议可以做的最少作业,只在ip的数据报效能之上添加了两个最根柢的效能: <font face=”微软雅黑” color=#dc143c size=4>复用和分用</font> 以及 <font face=”微软雅黑” color=#dc143c size=4>过失控制</font> 。

一、udp 的利益:
1、udp无需树立联接。因而udp不会引入树立联接的时延。

2、无联接状况。

tcp需要在端体系中维护联接状况。此联接状况包括接收和发送缓存、拥塞控制参数和序号与招认号的参数。

而udp不维护联接状况,也不跟踪这些参数。因而,某些专用使用效能器运用udp时,一般都能撑持更多的活动客户机。

3、分组首部开支小。tcp 20字节的首部开支,而udp仅有8字的开支。

4、使用层能非常好地控制要发送的数据和发送时刻。

udp没有拥塞控制,因而网络中的拥塞也不会影响主机的发送功率。某些实时使用需求以平稳的速度发送,能忍耐一些数据的丢掉,但不答应有较大的时延,而udp正好满足这些使用的需要。

udp 常用于一次性传输比照少量数掘的网络使用,如dns、snmp等, udp也常用于多媒体使用(如ip电话、实时视频会议、流媒体等)

udp 供给尽最大尽力的交给,即不保证可靠交给,但这并不料味着使用对数据的需求是不可以靠的,因而一切维护传输可靠性的作业需要用户在使用层来结束。使用实体可以根据使用的需要来活络方案自个的可靠性机制。

udp是面向报文的。发送方udp对使用层交下来的报文,在添加首部后就向下交给给ip层,既不兼并,也不拆分,而是保存这些报文的鸿沟;

接收方udp对ip层交上来udp用户数据报,去掉首部后就原封不动地交给给上层使用进程,一次交给一个无缺的报文。

因而报文不可以切割,是udp数据报处置的最小单位。
?

二、udp的首部格局
udp数据报包括两个有些: udp首部和用户数据,整个udp数据报作为ip数据报的数据有些封装在ip数据报中,如图所示。

校验和:检测udp数据报在传输中是不是有错。有错就丢。当源主机不想核算校验和,则直接令该字段为全0。

假定接收方udp发现收到的报文中的意图端标语不正确(即不存在对应于端标语的使用进程),就丢掉该报文,并由icmp发送“端口不可以达”过失报文给发送方。
?

三、udp 校验:
在核算校验和之前要在 udp 数据报之前添加 12 个字节的伪首部。伪首部既不向下传送也不向上递送,而只是是为了核算校验和。

有了伪首部不只校验了 udp 数据报,一起也校验了 ip 数据报的源 ip 地址和意图 ip 地址。

<font face=”微软雅黑” color=#dc143c size=5 >校验的进程:</font>

首要发送方把是全零放入校验和字段而且添加伪首部。

然后,把udp数据报当作是由许多16位的字串联接起来。

若udp数据报的数据有些不是偶数个字节,则要在数据有些添加一个全零字节(此字节不发送)。

接下来就按二进制反码核算出这些16位空的和。将此和的二进制反码写入校验和中。

在接收方,把收到的udp数据报加上伪首部(假定不为偶数个字节,则需要补上全零字节)后,按二进制反码核算出这些16位字的和。

当无过失时其成果应全为1。否则就标明有过失呈现,并丢掉这个 udp 数据报。

?
<font face=”微软雅黑” color=#dc143c size=4 >留心:</font>

1、校验时,若udp数据报有些的长度不是偶数个字节,则需要填入一个全0字节,可是此字节和伪首部相同,是不发送的。

2、假定udp校验和校验出udp数据报是差错的,可以丢掉,也可以交给给上层,可是需要附上差错陈述,即告诉上层这是差错的数据报。

3、比较于 ip 数据报的校验只校验 ip 数据报的首部而言,udp 的校验是把首部和数据有些一同进行校验。

这种简略的过失查验办法的检错才能并不强,但它的优点是简略,处置速度快。

public static void main(string args[]){
system.out.println(" hello word ");
}

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注