精华内容
下载资源
问答
  • 下列服务中使用udp传输数据的有
    2020-02-13 19:01:14

    1. UDP协议

    1.1 流程

    1. 服务器:new DatagramSocket(端口号) 启动服务器。
    2. 服务器:receive()方法等待接收网络数据包(阻塞方法:服务端先调用该方法,会进入持续等待的状态)。
    3. 客户端:通过目的ip+目的port(端口号),找到远程服务器(UDP无连接,但可以找到远程主机上的UDP进程)。
    4. 客户端:通过send()方法发送请求数据。
    5. 服务端:也通过send()方法响应客户端发来的数据,发送数据包。
    6. 客户端:receive()方法接收服务端发来的数据。

    1.2 UDP协议特点

    1. 无连接
    2. 不可靠
    3. 面向数据报

    2.TCP协议

    流程

    1. 服务端:启动服务器,new ServerSocket(port)
    2. 服务端:accept()方法进行监听,等待客户端连接。
    3. 客户端:建立远程连接,new Socket(ip, port)。
    4. 客户端和服务端连接成功,两个端口都可以发送或接收数据。由程序设定来决定哪一方先发送数据或接收数据。通常如果需要一端来接收的话,就必须要另一端提前先发送数据,否则接收端调用accept()方法会阻塞。

    TCP特点

    1. 面向字节流。
    2. TCP可以使长连接也可以是短连接。长连接:不调用close()方法关闭连接,就可以一直发送或接收数据。短连接:只发送或接收有限特定次数的数据,需要手动进行关闭。
    3. 有连接。
    4. 可靠传输。

    TCP模拟实现简单网络程序

    《Java模拟TCP协议的简单网络程序》

    更多相关内容
  • TCP/UDP数据包最大传输MTU

    千次阅读 2021-06-01 19:33:14
    概念 以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的. 这个1500字节被称为链路层的MTU(最大传输单元)....而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的

    概念
    以太网(Ethernet)数据帧的长度必须在46-1500字节之间,这是由以太网的物理特性决定的.
    这个1500字节被称为链路层的MTU(最大传输单元). 但这并不是指链路层的长度被限制在1500字节,其实这这个MTU指的是链路层的数据区.并不包括链路层的首部和尾部的18个字节.
    所以,事实上,这个1500字节就是网络层IP数据报的长度限制.
    因为IP数据报的首部为20字节,所以IP数据报的数据区长度最大为1480字节.
    而这个1480字节就是用来放TCP传来的TCP报文段或UDP传来的UDP数据报的.
    又因为UDP数据报的首部8字节,所以UDP数据报的数据区最大长度为1472字节.
    这个1472字节就是我们可以使用的字节数。

    原因
    当我们发送的UDP数据大于1472的时候会怎样呢?
    这也就是说IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).
    把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.
    这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便
    无法重组数据报.将导致丢弃整个UDP数据报。

    因此,在普通的局域网环境下,我建议将UDP的数据控制在1472字节以下为好.

    进行Internet编程时则不同,因为Internet上的路由器可能会将MTU设为不同的值.
    如果我们假定MTU为1500来发送数据的,而途经的某个网络的MTU值小于1500字节,那么系统将会使用一系列的机制来调整MTU值,使数据报能够顺利到达目的地,这样就会做许多不必要的操作.

    结语
    鉴于Internet上的标准MTU值为576字节,所以我建议在进行Internet的UDP编程时.
    最好将UDP的数据长度控件在548字节(576-8-20)以内.

     

     

    一、概述
    首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   
    其中以太网(Ethernet)的数据帧在链路层   
    IP包在网络层   
    TCP或UDP包在传输层   
    TCP或UDP中的数据(Data)在应用层   
    它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}   

        不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

    在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的限制。   
    我们从下到上分析一下:   
    1.在链路层,由以太网的物理特性决定了数据帧的长度为(46+18)-(1500+18),其中的18是数据帧的头和尾,也就是说数据帧的内容最大为1500(不包括帧头和帧尾),即MTU(Maximum Transmission Unit)为1500;  
    2.在网络层,因为IP包的首部要占用20字节,所以这的MTU为1500-20=1480; 
    3.在传输层,对于UDP包的首部要占用8字节,所以这的MTU为1480-8=1472;   
    所以,在应用层,你的Data最大长度为1472。当我们的UDP包中的数据多于MTU(1472)时,发送方的IP层需要分片fragmentation进行传输,而在接收方IP层则需要进行数据报重组,由于UDP是不可靠的传输协议,如果分片丢失导致重组失败,将导致UDP数据包被丢弃。   
    从上面的分析来看,在普通的局域网环境下,UDP的数据最大为1472字节最好(避免分片重组)。   
    但在网络编程中,Internet中的路由器可能有设置成不同的值(小于默认值),Internet上的标准MTU值为576,所以Internet的UDP编程时数据长度最好在576-20-8=548字节以内。

    二、TCP、UDP数据包最大值的确定     
            UDP和TCP协议利用端口号实现多项应用同时发送和接收数据。数据通过源端口发送出去,通过目标端口接收。有的网络应用只能使用预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP和TCP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。动态端口的范围是从1024到65535。  

     

            MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,EthernetII帧的结构DMAC+SMAC+Type+Data+CRC由于以太网传输电气方面的限制,每个以太网帧都有最小的大小64Bytes最大不能超过1518Bytes,对于小于或者大于这个限制的以太网帧我们都可以视之为错误的数据帧,一般的以太网转发设备会丢弃这些数据帧。

            由于以太网EthernetII最大的数据帧是1518Bytes这样,刨去以太网帧的帧头(DMAC目的MAC地址48bits=6Bytes+SMAC源MAC地址48bits=6Bytes+Type域2Bytes)14Bytes和帧尾CRC校验部分4Bytes那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值我们就把它称之为MTU。

    UDP 包的大小就应该是 1500 - IP头(20) - UDP头(8) = 1472(Bytes)
    TCP 包的大小就应该是 1500 - IP头(20) - TCP头(20) = 1460 (Bytes)

    注*PPPoE所谓PPPoE就是在以太网上面跑“PPP”。随着宽带接入(这种宽带接入一般为Cable Modem或者xDSL或者以太网的接入),因为以太网缺乏认证计费机制而传统运营商是通过PPP协议来对拨号等接入服务进行认证计费的,所以引入PPPoE。PPPoE导致MTU变小了以太网的MTU是1500,再减去PPP的包头包尾的开销(8Bytes),就变成1492。不过目前大多数的路由设备的MTU都为1500。

            如果我们定义的TCP和UDP包没有超过范围,那么我们的包在IP层就不用分包了,这样传输过程中就避免了在IP层组包发生的错误;如果超过范围,既IP数据报大于1500字节,发送方IP层就需要将数据包分成若干片,而接收方IP层就需要进行数据报的重组。更严重的是,如果使用UDP协议,当IP层组包发生错误,那么包就会被丢弃。接收方无法重组数据报,将导致丢弃整个IP数据报。UDP不保证可靠传输;但是TCP发生组包错误时,该包会被重传,保证可靠传输。

            UDP数据报的长度是指包括报头和数据部分在内的总字节数,其中报头长度固定,数据部分可变。数据报的最大长度根据操作环境的不同而各异。从理论上说,包含报头在内的数据报的最大长度为65535字节(64K)。

           我们在用Socket编程时,UDP协议要求包小于64K。TCP没有限定,TCP包头中就没有“包长度”字段,而完全依靠IP层去处理分帧。这就是为什么TCP常常被称作一种“流协议”的原因,开发者在使用TCP服务的时候,不必去关心数据包的大小,只需讲SOCKET看作一条数据流的入口,往里面放数据就是了,TCP协议本身会进行拥塞/流量控制。 

           不过鉴于Internet(非局域网)上的标准MTU值为576字节,所以建议在进行Internet的UDP编程时,最好将UDP的数据长度控制在548字节 (576-8-20)以内。

    三、TCP、UDP数据包最小值的确定
         在用UDP局域网通信时,经常发生“Hello World”来进行测试,但是“Hello World”并不满足最小有效数据(64-46)的要求,为什么小于18个字节,对方仍然可用收到呢?因为在链路层的MAC子层中会进行数据补齐,不足18个字节的用0补齐。但当服务器在公网,客户端在内网,发生小于18个字节的数据,就会出现接收端收不到数据的情况。

           以太网EthernetII规定,以太网帧数据域部分最小为46字节,也就是以太网帧最小是6+6+2+46+4=64。除去4个字节的FCS,因此,抓包时就是60字节。当数据字段的长度小于46字节时,MAC子层就会在数据字段的后面填充以满足数据帧长不小于64字节。由于填充数据是由MAC子层负责,也就是设备驱动程序。不同的抓包程序和设备驱动程序所处的优先层次可能不同,抓包程序的优先级可能比设备驱动程序更高,也就是说,我们的抓包程序可能在设备驱动程序还没有填充不到64字节的帧的时候,抓包程序已经捕获了数据。因此不同的抓包工具抓到的数据帧的大小可能不同。下列是本人分别用wireshark和sniffer抓包的结果,对于TCP 的ACK确认帧的大小一个是54字节,一个是60字节,wireshark抓取时没有填充数据段,sniffer抓取时有填充数据段。

    四、实际应用
            用UDP协议发送时,用sendto函数最大能发送数据的长度为:65535- IP头(20) - UDP头(8)=65507字节。用sendto函数发送数据时,如果发送数据长度大于该值,则函数会返回错误。  

            用TCP协议发送时,由于TCP是数据流协议,因此不存在包大小的限制(暂不考虑缓冲区的大小),这是指在用send函数时,数据长度参数不受限制。而实际上,所指定的这段数据并不一定会一次性发送出去,如果这段数据比较长,会被分段发送,如果比较短,可能会等待和下一次数据一起发送。
     

     

    展开全文
  • UDP数据传输使用的方法

    千次阅读 2017-10-12 10:53:38
    memset函数使用详解 1.将已开辟内存空间 s 的首 n 个字节的值设为值 c。例: void *memset(void *s,int c,size_t n); 2.memset() 函数常用于内存空间初始化。例:char str[100]; memset(str,0,100); 3.memset...

    memset函数使用详解

    1.将已开辟内存空间 s 的首 n 个字节的值设为值 c。例: void *memset(void *s,int c,size_t n);

    2.memset() 函数常用于内存空间初始化。例:char str[100];    memset(str,0,100);

    3.memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, '/0', sizeof(a));

    4.memset可以方便的清空一个结构类型的变量或数组。例:struct sample_struct TEST[10];memset(TEST,0,sizeof(struct sample_struct)*10);

    5.原型:extern void *memset(void *buffer, int c, int count);

    6.用法:#i nclude

    7.功能:把buffer所指内存区域的前count个字节设置成字符c。

    8.说明:返回指向buffer的指针。

    fgets函数的理解

    原型:char *fgets(char *buf, int n, FILE *fp)

    功能从文件流读取一行,送到缓存区,使用时注意以下几点:

    1.当遇到换行符或者缓存区已满,fgets就会停止,返回读到的数据,值得注意的是不能用fgets读二进制文件,因为fgets会把二进制文件当成文本文件来处理,这势必会产生乱码。


    2.每次调用fgets都会把缓存区的最后一个字符设为null,这意味着最后一个字符不能用来存放需要的数据,所以如果有一行,含有line_size个字符(包括换行符),想要把这行读入缓存区,请把参数n设为LINE_SIZE+1


    3.有结论1可推出:给定参数n,fgets只能读取n-1个字符(包括换行符),如果有一行超过n-1个字符,那么fgets返回一个不完整的行,也就是说,只读取该行的前n-1个字符,但是,缓存区总是以null字符结尾,对fgets的下一次调用会继续该行

    用法举例:
    读取一个文件并打印之

    1. FILE * fp = fopen(argv[1],"r");
    2. char buf[200];
    3. while (fgets(buf,200,fp) != NULL) {    /* 每行的字符不能超过199才能正常工作 */
    4.       printf("%s",buf);
    5. }

    sendto函数的理解

    简述: 向一指定目的地发送数据。

    #include <winsock.h>

      int PASCAL FAR sendto( SOCKET s, const char FAR* buf, int len, int flags,
      const struct sockaddr FAR* to, int tolen);

      s:一个标识套接口的描述字。
      buf:包含待发送数据的缓冲区。
      len:buf缓冲区中数据的长度。
      flags:调用方式标志位。
      to:(可选)指针,指向目的套接口的地址。
      tolen:to所指地址的长度。

    注释:
      sendto()适用于已连接的数据报或流式套接口发送数据。对于数据报类套接口,必需注意发送数据长度不应超过通讯子网的IP包最大长度。IP包最大长度在WSAStartup()调用返回的WSAData的iMaxUdpDg元素中。如果数据太长无法自动通过下层协议,则返回WSAEMSGSIZE错误,数据不会被发送。
      请注意成功地完成sendto()调用并不意味着数据传送到达。
      sendto()函数主要用于SOCK_DGRAM类型套接口向to参数指定端的套接口发送数据报。对于SOCK_STREAM类型套接口,to和tolen参数被忽略;这种情况下sendto()等价于send()。
      为了发送广播数据(仅适用于SOCK_DGRAM),in参数所含地址应该把特定的IP地址INADDR_BROADCAST(winsock.h中有定义)和终端地址结合起来构造。通常建议一个广播数据报的大小不要大到以致产生碎片,也就是说数据报的数据部分(包括头)不超过512字节。
      如果传送系统的缓冲区空间不够保存需传送的数据,除非套接口处于非阻塞I/O方式,否则sendto()将阻塞。对于非阻塞SOCK_STREAM类型的套接口,实际写的数据数目可能在1到所需大小之间,其值取决于本地和远端主机的缓冲区大小。可用select()调用来确定何时能够进一步发送数据。
      在相关套接口的选项之上,还可通过标志位flag来影响函数的执行方式。也就是说,本函数的语义既取决于套接口的选项也取决于标志位。后者由以下一些值组成:
    意义
    MSG_DONTROUTE   指明数据不选径。一个WINDOWS套接口供应商可以忽略此标志;参见2.4节中关于SO_DONTROUTE的讨论。
    MSG_OOB     发送带外数据(仅适用于SO_STREAM;参见2.2.3节)。  
    返回值:
      若无错误发生,send()返回所发送数据的总数(请注意这个数字可能小于len中所规定的大小)。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。

    recvform函数的理解

    简述:   接收一个数据报并保存源地址。

    #include <winsock.h>

      int PASCAL FAR recvfrom( SOCKET s, char FAR* buf, int len, int flags,
      struct sockaddr FAR* from, int FAR* fromlen);

      s:标识一个已连接套接口的描述字。
      buf:接收数据缓冲区。
      len:缓冲区长度。
      flags:调用操作方式。
      from:(可选)指针,指向装有源地址的缓冲区。
      fromlen:(可选)指针,指向from缓冲区长度值。

    注释:
      本函数由于从(已连接)套接口上接收数据,并捕获数据发送源的地址。
      对于SOCK_STREAM类型的套接口,最多可接收缓冲区大小个数据。如果套接口被设置为线内接收带外数据(选项为SO_OOBINLINE),且有带外数据未读入,则返回带外数据。应用程序可通过调用ioctlsocket()的SOCATMARK命令来确定是否有带外数据待读入。对于SOCK_STREAM类型套接口,忽略from和fromlen参数。
      对于数据报类套接口,队列中第一个数据报中的数据被解包,但最多不超过缓冲区的大小。如果数据报大于缓冲区,那么缓冲区中只有数据报的前面部分,其他的数据都丢失了,并且recvfrom()函数返回WSAEMSGSIZE错误。
      若from非零,且套接口为SOCK_DGRAM类型,则发送数据源的地址被复制到相应的sockaddr结构中。fromlen所指向的值初始化时为这个结构的大小,当调用返回时按实际地址所占的空间进行修改。
      如果没有数据待读,那么除非是非阻塞模式,不然的话套接口将一直等待数据的到来,此时将返回SOCKET_ERROR错误,错误代码是WSAEWOULDBLOCK。用select()或WSAAsynSelect()可以获知何时数据到达。
      如果套接口为SOCK_STREAM类型,并且远端“优雅”地中止了连接,那么recvfrom()一个数据也不读取,立即返回。如果立即被强制中止,那么recv()将以WSAECONNRESET错误失败返回。
      在套接口的所设选项之上,还可用标志位flag来影响函数的执行方式。也就是说,本函数的语义既取决于套接口选项,也取决于标志位参数。标志位可取下列值:
      值 意义
      MSG_PEEK 查看当前数据。数据将被复制到缓冲区中,但并不从输入队列中删除。
      MSG_OOB 处理带外数据(参见2.2.3节具体讨论)。
      
    返回值:
      若无错误发生,recvfrom()返回读入的字节数。如果连接已中止,返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。
    错误代码:
        WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
        WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
        WSAEFAULT:fromlen参数非法;from缓冲区大小无法装入端地址。
        WSAEINTR:阻塞进程被WSACancelBlockingCall()取消。
        WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
        WSAEINVAL:套接口未用bind()进行捆绑。
        WSAENOTCONN:套接口未连接(仅适用于SOCK_STREAM类型)。
        WSAENOTSOCK:描述字不是一个套接口。
        WSAEOPNOTSUPP:指定了MSG_OOB,但套接口不是SOCK_STREAM类型的。
        WSAESHUTDOWN:套接口已被关闭。当一个套接口以0或2的how参数调用shutdown()关闭后,无法再用recv()接收数据。
        WSAEWOULDBLOCK:套接口标识为非阻塞模式,但接收操作会产生阻塞。
        WSAEMSGSIZE:数据报太大无法全部装入缓冲区,故被剪切。
        WSAECONNABORTED:由于超时或其他原因,虚电路失效。
        WSAECONNRESET:远端强制中止了虚电路。

    展开全文
  • 传输层TCP/UDP

    千次阅读 2022-01-22 20:25:43
    目录 传输层相关名词解释 UDP协议 UDP协议特点 ...UDP首部 ...传输层相关名词解释 ...1.传输层: 传输层是TCP/IP协议五层...TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP

    目录

    传输层相关名词解释

    UDP协议

    UDP协议特点

    适用场景

    UDP首部

    TCP协议

    TCP协议特点

    常见面试题


    传输层相关名词解释

    1.传输层: 传输层是TCP/IP协议五层模型中的第四层。它提供了应用程序间的通信,它负责数据能够从发送端传输到接收端。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。总之,根据通信的具体特征,选择合适的传输层协议是非常重要的。

    2.端口号:数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。在TCP/IP协议中, 用"源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识一个通信(可以通过 netstat -n查看,协议号指的是使用的哪个协议)。一个进程(程序)可以绑定多个端口号,但是一个端口号不能被多个进程(程序)绑定。

    3.端口号范围划分:

    • 0 - 1023: 知名端口号,HTTP、FTP、 SSH等这些广为使用的应用层协议他们的端口号都是固定的,自己写的程序中,不能随意绑定知名端口号。

    • 1024 - 65535:操作系统动态分配的端口号。 客户端程序的端口号,就是由操作系统从这个范围分配的。

    4.常见的知名端口号:

    • ssh服务器:22端口

    • ftp服务器:21端口

    • http服务器:80端口

    • telnet服务器:23端口

    • https服务器:443端口

    • MYSQL服务器:3306端口

    注:在Linux操作系统中使用命令cat /etc/services可以看到所有的知名端口。

    5.套接字(Socket)

    应用在使用TCP或UDP时,会用到操作系统提供的类库。这种类库一般被称为API(Application Programming Interface,应用编程接口)。使用TCP或UDP通信时,又会广泛使用到套接字(socket)的API。应用程序利用套接字,可以设置对端的IP地址、端口号,并实现数据的发送与接收。

    6.netstat工具: 用来查看网络状态。

    n 拒绝显示别名,能显示数字的全部转化成数字l 仅列出有在Listen (监听)的服务状态p 显示正在使用Socket的程序识别码和程序名称t (tcp) 仅显示tcp相关选项u u (udp) 仅显示udp相关选项a (all) 显示所有选项,默认不显示LISTEN相关

    7.pidof [进程名]: 可以根据进程名直接查看服务器的进程id。例如:pidof sshd。

    UDP协议

    UDP协议特点

    UDP(User Datagram Protocol) 不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。

    即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如果需要这些细节控制,那么不得不交由采用UDP的应用程序去处理,因为UDP不能帮你去处理,所以得自己处理。

    适用场景

    • 包总量较少的通信(DNS、SNMP等)

    • 视频、音频等多媒体通信(即时通信)

    • 限定于LAN等特定网络中的应用通信

    • 广播通信(广播、多播)

    UDP首部

    除去数据的部分正是UDP的首部。UDP首部由源端口号,目标端口号,包长和校验和组成。

    • 源端口号(Source Port)

    表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号。没有源端口号的时候,该字段的值设置为0。可用于不需要返回的通信中(例如,只针对某个主机或应用,亦或针对某个组织,只单方面发送更新消息,不需要接收端返回任何确认或应答。) 。

    • 目标端口号(Destination Port)

      表示接收端端口,字段长度16位。

    • 包长度(Length)该字段保存了UDP首部的长度跟数据的长度之和(在UDP-Lite(6.5.1节)中,该字段变为ChecksumCoverage,表示校验和的计算范围。) 。单位为字节(8位字节)。

    • 校验和(Checksum)

      校验和是为了提供可靠的UDP首部和数据而设计

    TCP协议

    TCP协议特点

    常见面试题

    TCP与UDP有哪些区别?各自应用场景?

    在交互过程中如果数据传送完了,还不想断开连接怎么办,怎么维持?

    ARP 协议的工作原理?

    TCP 的主要特点是什么?

    UDP 的主要特点是什么?

    TCP 和 UDP 分别对应的常见应用层协议有哪些?

    为什么 TIME-WAIT 状态必须等待 2MSL 的时间呢?

    TCP 协议是如何保证可靠传输的?

    谈谈你对停止等待协议的理解?

    谈谈你对 ARQ 协议的理解?(TCP)

    谈谈你对滑动窗口的了解?

    谈下你对流量控制的理解?

    谈下你对 TCP 拥塞控制的理解?使用了哪些算法?

    什么是粘包?

    TCP 黏包是怎么产生的?

    怎么解决拆包和粘包?

    forward 和 redirect 的区别?

    UDP 如何实现可靠传输?

    Keep-Alive 和非 Keep-Alive 有什么区别?

    DNS 为什么用 UDP

    DNS 的解析过程?

    简单说下怎么实现 DNS 劫持

    展开全文
  • TCP、UDP提供的运输服务

    千次阅读 2021-09-05 09:44:01
    TCP提供的服务包括面向连接服务和可靠数据传输服务。当某个应用程序调用TCP作为其运输协议时,该应用程序就能获得TCP提供的这两种服务。 面向连接的服务: 再应用层数据报文开始流动之前,TCP让客户和服务器互相...
  • 用户数据报协议UDP总结

    千次阅读 2017-11-09 12:14:03
    用户数据报协议UDP小结阅读目录: 一、 UDP首部格式 二、 UDP主要特点 三、 UDP校验和计算 四、 UDP编程实现
  • 1.客户端:的书上在讲解传输层的时候把发起连接请求的主机称为客户端。这里的客户端其实就是指主机,并不是客户端进程(应用层的叫法)。 2.服务器/服务端:在传输层上的服务器是指接收请求连接的主机。这个跟我们...
  • 3.UDP传输效率高,因为UDP不需要建立连接,并且包头比TCP要小。 4.UDP报文面向数据报,TCP面向字节流。因为UDP没有连接,不能保证数据报文是同一个客户发送的有序数据报,如果按流接受的话就会导致A的数据报和B的...
  • 一、基于TCP的应用层协议:SMTP、TELNET、HTTP、FTP 基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、RIP(路由选择协议)、DHCP、BOOTP(是DHCP的前身)、IGMP(Internet组管理协议) ...
  • UDP完成数据的发送和接收的代码

    千次阅读 2018-10-22 16:26:43
    要实现UDP通信需要创建一个发送端程序和一个接收端程序,很明显,在通信时只有接收端程序先运行,才能避免因发送端发送的数据无法接收,而造成数据丢失。因此,首先需要来完成接收端程序的编写。 UDP完成数据的发送...
  • UDP主要丢包原因及具体问题分析 https://libaineu2004.blog.csdn.net/article/details/48039599?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_...
  • TCP和UDP详解

    千次阅读 2021-11-20 17:15:04
    TCP和UDP详解
  • B、 UDP提供面向报文传输服务 C、 UDP提供面向连接传输服务 D、 UDP实现进程间通信 正确答案: C TCP实现的是面向连接的服务UDP提供不可靠的传输协议。 不管是TCP还是UDP,收不报文都存在检错功能,都有着循环...
  • 文件传输,电子邮件,文件服务,虚拟终端 TFTP,FTP,HTTP,SNMP,SMTP,DNS,RIP,Telnet 表示层 数据格式化,代码转换,数据加密 无 会话层 解除或...
  • 1、概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层... 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包...
  • TCP、UDP数据包大小的限制

    千次阅读 2018-09-04 12:10:55
    1、概述 首先要看TCP/IP协议,涉及到四层:链路...TCP或UDP中数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}  不同的协议层对数据包不同的称谓,在传输层叫做段(segment),在网络...
  • 1、【单选题】SNMP(简单网络管理协议)采用UDP提供的数据服务传递信息,这是由于( )。 A、 UDP是面向连接的传输方式 B、 UDP实现网络管理的效率较高 C、 UDP数据报文可以比 TCP 数据报文大 D、 UDP比TCP更加可靠 ...
  • 在因特网模型传输三种协议: UDP 、 TCP和 SCTP。首先讨论UDP协议,它是这 三种比较简单的一种协议。我们将看到如何使用缺乏另外两种协议的某些特性的这种简单 的传输层协议。 然后讨论TCP协议,它是一种...
  • 传输层:UDP 协议一、传输层协议从之前介绍的网络层协议来看,通信的两端是两台主机,IP 数据报首部就标明了这两台主机的 IP 地址。但是从传输层来看,是发送方主机的一个进程与接收方主机的一个进程在交换数据...
  • 传输两个协议UDP和TCP,通常UDP都是比较简单的协议字段,因为UDP不需要面向连接,也就是说,发送UDP数据包过去时候,不需要先建立连接再发送,可以直接发送,并且UDP不保证可靠性,也就是说,发送数据包...
  • HYPER-V 虚拟机两台DC DB服务器 ,系统WINDOWS SERVER20121、在DC安装AD 域服务 DNS服务2、提升为域控制器3、IP配置:192.168.0.220255.255.255.0192.168.0.1127.0.0.1219.146.1.66安装完成DNS报错,日志为:警告:...
  • 低广播延迟已经成为任何关于建设源端站和CDN的招标和竞争的必要特性。以前这种标准只适用于体育广播...低延迟不应降低信号传输的质量,这意味着在编码和复用时使用最小的缓冲,同时在任何设备的屏幕上需要保持流畅和
  • TCP与UDP的区别及相关问题

    千次阅读 2020-06-20 18:45:28
    TCP在传输数据之前必须先建立连接,数据传输结束后要释放连接。 每一条TCP连接只能2个端点,故TCP不提供广播或多播服务。 TCP提供可靠交付,通过TCP连接传输的数据,无差错、不丢失、不重复、并且按序...
  • UDP协议的数据传输单元叫 UDP用户数据报,而TCP协议的数据传输单元叫 TCP报文段(segment)。 UDP在传送数据前不需要先建立连接。远地主机的运输层在收到UDP报文段后,不需要给出任何确认。虽然UDP不提供可靠交付服务...
  • 【计算机网络】网络层精选习题(含联考真题)传输层提供的服务UDP协议、TCP协议
  • OSI七层参考模型的应用层、传输层和网络层所使用的协议: 应用层协议 文件传输协议FTP 从网络上下载文件时使用的是FTP协议。 超文本传输协议HTTP 上网浏览网页时使用的是HTTP协议。 域名服务DNS DNS也是一种应用...
  • 传输层(Udp协议 Tcp协议)

    千次阅读 2018-10-20 21:47:51
    传输层是负责数据能够从发送端传输接收端。负责端与端之间的传输。 端口号是唯一表示
  • 计算机网络 第五章 传输

    千次阅读 2021-09-25 17:33:17
    1、下列关于TCP和UDP的描述正确的是(B)。 A.TCP和UDP均是面向连接的 B.TCP是面向连接的,UDP是无连接的 C.TCP和UDP均是无连接的 D.UDP是面向连接的,TCP是无连接的 2、若在网络上传输语音和影像数据传输层...
  • TCP及UDP首部各个字段

    万次阅读 2019-10-27 23:55:35
    TCP概念:         ...面向连接:面向连接即意味着两个使用TCP的应用(通常为服务器与客户端)在彼此交换数据之前必须先建立一个TCP连接。   &nb...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,686
精华内容 7,074
热门标签
关键字:

下列服务中使用udp传输数据的有