运输层的作用、UDP协议分析、TCP简述(4)

您所在的位置:网站首页 简述tcp协议的功能特点和作用 运输层的作用、UDP协议分析、TCP简述(4)

运输层的作用、UDP协议分析、TCP简述(4)

2024-07-11 05:12:03| 来源: 网络整理| 查看: 265

本篇主要有以下内容:

一 运输层的作用

二 套接字(socket)的概念区分

三 UDP协议分析(特点, DatagramSocket)

四 TCP套接字(简述)

 

 

一 运输层的作用

1 提供应用进程间的逻辑通信

(1)数据链路层主要负责数据在链路中的传输,即是帧数据从数据链路的一端传到另一端;

(2)网络层主要负责数据在网络之间的传输,即是IP数据报从一个网络的一台主机传送到另一个网络的主机;

(3)运输层是负责不同主机之间应用进程之间的逻辑通信,TCP/IP协议在运输层有两类运输协议,分别是提供不可靠传输的UDP协议和提供可靠传输TCP协议

 

2 提供复用-分用功能

        这里的"复用"是指在发送方不同的应用里程都可以使用同一个运输层协议传送数据(当然需要加上适当的首部),而"分用"是指接收方的运输层在剥去报文首部后能够把这些数据正确交付到目的应用进程.

        关于接收方如何将传入的数据报文分配到对应的套接字,参见第五节的"解调多路复用".

 

3 对接收到的报文进行差错检测

        在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分.但是在传输层,则需要对收到的报文进行差错检测(包括首部和数据部分)

 

 

二 套接字(socket)的概念区分

1 可以表示应用程序访问连网协议的应用编程接口API,即socket API,在讲解Java Socket API时是指这个意思.

2 可以表示在操作系统内核中连网协议的Berkeley实现,称为socket实现,在讲解操作系统底层实现时是指这个意思.

3 可以表示RFC 793定义的socket,指端口号拼接到IP地址,在讲协议规范时是指这个意思,共有两类,即UDP套接字和tcp套接字

 

 

三 UDP协议的分析

 

1 UDP协议的特点

(1)UDP只在IP的数据报服务之上增加了很少一点功能,这就是复用和分用的功能以及差错检测的功能.

(2)UDP是无连接的,使用尽最大努力交付,而不保证可靠交付,如果发现接收的数据报有错,那么直接丢弃不做其他处理;UDP对应用层交下来的报文,不合并不拆分直接封装,一次交付一个完整的报文,所以应用程序必须选择合适大小的报文,若报文太长,IP层在传送时可能要进行分片,若报文太短,UDP把它交给IP层后,会使IP数据报的首部相对长度太大,都将降低IP层的效率.

(3)UDP没有拥塞控制,在源主机会以恒定的速率发送数据,支持一对一,一对多,多对一和多对多的交互通信,首部开销小,只有8个字节,比TCP的20个字节首部要短

(4)UDP并不保证信息一定能成功到达目的地址,而且信息到达的顺序与其发送顺序不一定一致,程序要处理好信息的丢失和重排.同时应用进程在不影响应用的实时性的前提下增加提高可靠性的措施,如防止网络拥塞,减少数据丢失,纠错或重传已丢失的报文等等.

 

2 DatagramSocket

 

/关于本地端口的绑定

(1)在客户端new DatagramSocket对象时,可以不指定要绑定的本地端口和IP,程序会自动选择本地地址和可用端口号,而远程IP和端口号由DatagramPacket指定;但在服务端必须显式地设置要监听的本地端口号,并使客户端知道该端口,因为客户端要知道目标地址和目标端口号才能发送数据.

 

(2)可以使用DatagramSocket.connect()方法来设置套接字的远程地址和端口,这样该套接字就只能与指定的地址和端口进行通信,任何向其他地址和端口发送数据报文的尝试都将抛异常.套接字也将只接收从指定地址和端口发送来的数据报文.

     

注意:

        连接到多播地址或广播地址的套接字只能发送数据报文不而能用作接收,■因为数据报文的源地址总是一个单播地址;

        而连接仅仅是本地操作,与TCP协议不同,UDP中没有端对端的数据包交换,可用disconnect()关闭连接.

        假如连接存在,那么调用DatagramSocket.getInetAddress()和DatagramSocket.getPort()不为空,它们分别是所"连接"的远程IP和地址

 

/关于发送和接收

(1)与tcp套接字不同,UDP套接字将保留边界信息,使应用程序在接受信息时,比使用TCP套接字更简单.因为DatagramSocket的每次receive()调用最多只能接收调用一次send()方法所发送的数据.而且,不同的receive()方法调用绝不会返回同一个send()方法调用所发送的数据.

 

(2)就是说,如果调用一次receive()方法接收了一次send()方法调用所发送的数据,那么如果还有剩余的数据没接收,就会丢弃剩余的数据,出于这个原因,接收者应该提供一个有足够大的缓存空间的DatagramPacket实例,以完整地存放调用receive()方法时应用程序协议所允许的最大长度的消息.一个DatagramPacket实例中所运行传输的最大数据量为65507字节,即udp数据报文所能负载的最多数据,因此,使用一个此字节数左右的缓存数组的数据包总是安全的.

 

(3)由于UDP没有可靠传输和拥塞控制机制,在源主机会以恒定的速率发送数据,所以send()方法调用返回时,消息已经被发送到了底层的传输信道中,并正处在(或即将处在)发送途中.

 

(4)可以使用setSoTimeout设置其recieve()方法调用的最长阻塞时间,在阻塞期间如果数据接收还未完成,则抛出异常.

 

疑问:

■ 发送send()是否会长时间阻塞

■ 假内底层实现的接收缓存接收不了UDP数据报了,那么是不是直接丢弃

 

 

四 TCP套接字(简述)

 

1 TCP套接字

        套接字 socket = (IP地址: 端口号);

        TCP连接 := {通信两端的端点之socket1,通信两端的端点之socket2} = {(IP1:port1),(IP2:port2)};

 

        由此看出,TCP连接就是由协议软件所提供的一种抽象.socket(套接字,这里指应用层的编程接口)是一种抽象层,应用程序通过它来发送和接收数据,就像应用程序打开的一个文件句柄,通过文件句柄操作文件.

 

2 TCP和UDP协议中TCP是绝对可靠的吗,UDP的尽最大能力交付是啥意思?

★ 在网络正常及无欺骗攻击的情况下是可靠的,如果在传输层出现数据传输出错,那么在应用层可以重传,也可以关闭对应的出错的socket连接; 而尽最大能力交付是将数据发出去以后,数据能否到达目的地就要看网络的状况了



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭