首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Linux网络】————socket和udp协议

不管这台主机是大端机还是小端机, 都会按照这个TCP/IP规定的网络字节序来发送/接收数据; 如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可; 为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行...五、udp_socket_server代码编写 udp用的是SOCK_DGRAM,那么就是无连接不可靠的协议。...总体代码:Liunx仓库(1): Linux学习相关代码 - Gitee.com 六、udp_socket_client代码编写 1、客户端要绑定吗?...解释:前面我们说过了,一个端口号只能被一个进程所绑定,server端如此,client端也是如此,但是计算机有着成千上万个应用,虽然我们不可能一次性全部打开,但是我们总是会有开很多的情况, 我们假如说是这前十几个应用把常见的端口号都占了的话...代码:Liunx仓库(1): Linux学习相关代码 - Gitee.com 七、地址转换函数 1、介绍 字符串转in_addr的函数: in_addr转字符串的函数: 其中inet_pton和inet_ntop

15510

UDP协议:校验和的计算

在讲UDP的校验和计算之前,先需要明确一件事情:在计算UDP报文的Checksum之前,我们需要在UDP报文段的头部之前,加入一个“伪头部”。...伪头部 图片 UDP报文段伪头部+头部+数据段 如上图所示,对于运行在IPV4协议之上的UDP协议,其伪头部为红色部分所示。 为何称之为“伪头部”?...原因是,UDP协议只使用它来辅助计算校验和,它并不是发送IP数据包时使用的IP数据包的头部。 校验和的计算 在《计算机网络:自顶向下方法》这本书的中译版本中,对于UDP校验和的计算讲解不算很清楚。...最终,将低16位取反,得到校验和,填入checksum字段中 差错检验 当接收到UDP报文时,需要如何检验其正确性?...方法就是将UDP报文中包括校验和在内的,所有的16位的数相加,如果低16位全为1,则没有出错。否则表明该分组中出现了错误。 需要注意,UDP对差错具有一定的校验能力,但缺少差错恢复的能力。

3.5K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux| |对于UDP的学习

    16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB) 检验和:如果校验和出错,就会直接丢弃(检验的是把首部和数据部分一起都检验) 校验值首先在数据发送方通过特殊的算法计算得出...如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检验是否出错。...如果我们需要传输的数据超过64K,就需要应用层手动的分包,多次发送,并在接收端拼装 UDP首部中校验和的计算方法有些特殊。...在计算校验和时,要在UDP用户数据报之前增加12个字节的伪首部 伪首部既不向下传输也不想上递送,而仅仅是为了计算校验和 与IP数据报的校验和只检验IP数据报的首部不同,UDP的校验和是把首部和数据部分一起都检验...启动服务器 必须要给服务器绑定一个ip地址和端口号,也就是要注意该服务器处于该计算机上的哪一个进程上

    2.8K20

    【传输层】概述、复用分用、UDP详解、UDP校验

    -分用---------传输层从网络层收到数据后交付给指定应用程序 套接字------Socket---IP:端口号 UDP协议---无连接、不可靠---再IP数据报上加复用分用和差错检测-------...8B,TCP20B UDP首部格式----4个2B-------不需要回复就不用谢源端口号就写0,------分用的时候,找不到对应的目的端口号就丢弃保温并给发送方ICMP UDP校验-----伪首部-...不向上上传也不往下传------伪首部只有在计算校验和的时候才出现--------伪IP首部--------17表示使用UDP UDP校验----直接把横着的四个字节------二进制求和取反码----...ICMP UDP校验-----伪首部-不向上上传也不往下传------伪首部只有在计算校验和的时候才出现--------伪IP首部--------17表示使用UDP UDP校验----直接把横着的四个字节...------二进制求和取反码------填入检验和

    1.1K20

    TCP和UDP

    在另方面,UDP主要用于那些对高速传输和实时性较高要求的通信或广播通信。...6 UDP(User Data Protocol,用户数据报协议) 1、UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上...在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、 计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。...3、UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。 4、吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、 源端和终端主机性能的限制。...ping命令是使用 IP 和网络控制信息协议 (ICMP),因而没有涉及到任何传输协议(UDP/TCP) 和应用程序。它发送icmp回送请求消息给目的主机。

    89710

    TCP 和 UDP ...

    TCP 的这种可靠性主要由下面这些特征来保证: 通过序列号和应答号实现可靠性 计算机网络主机之间的相互通信非常类似于我们日常生活中两个人之间打电话,这种对话通常是一问一答形式,如果你讲了一句话并没有收到任何回应...报文段的差异 TCP 和 UDP 同属于传输层协议,传输层协议传输的数据统称为报文段,TCP 和 UDP 的报文段的主要差异如下。...校验和(Checksum):UDP 使用校验和来保证数据安全性,UDP 的校验和也提供了差错检测功能,差错检测用于校验报文段从源到目标主机的过程中,数据的完整性是否发生了改变。...另外,和 UDP 一样,TCP 也包含校验和(checksum field) ,除此之外,TCP 报文段首部还有下面这些 32 比特的序号字段(sequence number field) 和 32 比特的确认号字段...TCP 和 UDP 都提供了数据校验功能。

    9810

    TCP和UDP详解

    UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。...即TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接 TCP 提供交付保证(Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输),无差错,不丢失,不重复,且按序到达,也保证了消息的有序性...为什么常说TCP有粘包和拆包的问题而不说UDP?...一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下: 其中,0 ≤ a < 1,RTTs 随着 a 的增加更容易受到 RTT 的影响。...捎带应答 在一个 TCP 包中既发送数据又发送确认应答的一种机制,由此,网络利用率会提高,计算机的负荷也会减轻,但是这种应答必须等到应用处理完数据并将作为回执的数据返回为止。

    98520

    校验和计算原理_CRC校验原理及代码

    校验和思路 首先,IP、ICMP、UDP和TCP报文头都有检验和字段,大小都是16bit,算法基本上也是一样的。 在发送数据时,为了计算数据包的检验和。...,按如下步骤: 1、把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段; 2、检查计算出的校验和的结果是否为0; 3、如果等于0,说明被整除,校验和正确。...虽然说上面四种报文的校验和算法一样,但是在作用范围存在不同:IP校验和只校验20字节的IP报头;而ICMP校验和覆盖整个报文(ICMP报头+ICMP数据);UDP和TCP校验和不仅覆盖整个报文,而且还有...另外UDP、TCP数据报的长度可以为奇数字节,所以在计算校验和时需要在最后增加填充字节0(填充字节只是为了计算校验和,可以不被传送)。...计算和验证校验和比较简单、快递。

    2.2K30

    Linux| |对于UDP的学习

    协议 UDP协议端格式 插图:UDP协议端格式 16为UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度(64KB) 检验和:如果校验和出错,就会直接丢弃(检验的是把首部和数据部分一起都检验...) 校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还要在重新计算。...如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检验是否出错。...如果我们需要传输的数据超过64K,就需要应用层手动的分包,多次发送,并在接收端拼装 UDP首部中校验和的计算方法有些特殊。...在计算校验和时,要在UDP用户数据报之前增加12个字节的伪首部 伪首部既不向下传输也不想上递送,而仅仅是为了计算校验和 与IP数据报的校验和只检验IP数据报的首部不同,UDP的校验和是把首部和数据部分一起都检验

    3.1K30

    linux udp编程_linux中socket编程

    在前面的文件中,我们介绍了linux网络编程中与IP相关的知识和常用的函数总结,本文针对具体的UDP通信,来详细的介绍UDP通信的使用,包括UDP通信中的点对点通信,多播,广播等。...一、UDP通信中服务端和客户端的基本编程框架 与TCP相比较,UDP是面向无连接的通信方式,不需要connect、listen、accept等函数操作,不用维护TCP的连接、断开等状态。...三、UDP中组播的使用 单播和广播是两个极端,要么对一个主机进行通信,要么对整个局域网上的主机进行通信。...3.2、组播的使用 组播在基本UDP编程框架的基础上,使用setsockopt()函数和getsockopt()函数来实现,需要设置IP层的相关参数(第二个参数为 IPPROTO_IP),其原型如下:...:加入或者退出一个组播组其参数为一个结构体 使用组播的一个基本编程流程如下: 3.3 使用组播的服务端和客户端例子 (TBD) 三、UDP中广播的使用 UDP广播与普通的UDP通信区别不是很大,如果需要发送广播消息时

    11.1K10

    【Linux】:传输层协议 UDP

    例如,TCP 和 UDP 可以同时使用同一个端口号。 不同 IP 地址: 如果主机有多个 IP 地址,不同进程可以绑定到同一个端口号,但使用不同的 IP 地址 三、UDP 协议 1....UDP 协议端格式 16 位 UDP 长度:表示整个数据报 (UDP 首部+UDP 数据) 的最大长度 如果校验和出错, 就会直接丢弃; 现在我们有两个问题,UDP 是 如何做到解包和分用的,按照上面的逻辑...,之前在网络版本计算器和 http 的相关文章 都采用到了 类似方案,这种自己描述自己的特性-> 叫作 自描述字段 ,方便把报头固定下来,然后保证对方能够读到完整的报文 2....UDP 特点 UDP 传输的过程类似于寄信: 无连接: 知道对端的 IP 和端口号就直接进行传输, 不需要建立连接; 不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方,UDP...但是这个接收缓冲区不能保证收到的 UDP 报的顺序和发送 UDP 报的顺序一致; 如果缓冲区满了, 再到达的 UDP 数据就会被丢弃; UDP 的 socket 既能读, 也能写, 这个概念叫做 全双工

    15210

    【Linux】传输层协议:UDP和TCP

    校验和我们一般不关心,如果校验和正确则证明该报文在传输过程中没有发生损坏,对端正常接收该报文即可,如果校验和出错,例如发生比特位翻转等问题,则对端直接丢弃该报文,该报文视为无效报文。 2....传输层和网络层都是在linux内核中实现的,而linux内核是用C语言实现的,那UDP报头实际就是一个结构体,结构体成员变量实际就是UDP报头中的各个字段值,所以在分用时,只需要让指针指向数据包的前8个字节...并且从UDP和TCP通信时,使用的套接字编程API的不同,我们也可以看出UDP面向数据报和TCP面向字节流之间的差异,UDP是无连接的,所以UDP每次在发送数据时,都需要指定对端的socket地址,同样每次在接收数据时...1.2 网络协议栈和linux系统的联系(以port为键值的开散列哈希表,哈希桶存储port对应的PCB的地址) 1....理解TCP的报头和UDP报头一样,他们其实都是linux内核里面的结构体,当向网络层交付报文时,TCP会把发送缓冲区中的数据和TCP报头粘连在一起,然后统一向下交付。

    1.1K30

    python 计算校验和

    校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段。其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的。 使用python计算校验和时记住做截断就可以了。...这里仅仅是作为一个代码样本,权作标记,直接上代码 ''' Created on 2014年9月4日 @author: lenovo ''' import random ''' 实际计算校验和时,解释为无符号整数还是带符号整数...,如果是带符号整数,最高位会被解释符号位 ''' def char_checksum(data, byteorder='little'): ''' char_checksum 按字节计算校验和...return checksum def uchar_checksum(data, byteorder='little'): ''' char_checksum 按字节计算校验和...所以一般情况下可以使用无符号整数来计算校验和,简单快速。

    2.7K10
    领券