
tcp/ip协议
文章平均质量分 60
TCP/IP 是因特网的通信协议。
TCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。
流风回雪1988
这个作者很懒,什么都没留下…
展开
-
TCP/IP协议栈之LwIP-pbuf
pbuf结构体就是一个描述协议栈中数据包的数据结构:next是一个pbuf类型的指针,指向下一个pbuf,因为网络中的数据包可能很大,而pbuf能管理的数据包大小有限,就会采用链表的形式将所有的pbuf包连接起来,这样子才能完整描述一个数据包,这些连接起来的pbuf包会组成一个链表,称之为pbuf链表。payload是一个指向数据区域的指针,指向该pbuf管理的数据区域起始地址,这里的数据区域可以是紧跟在pbuf结构体地址后面的RAM空间,也可以是ROM中的某个地址上,取决于pbuf的类型。to转载 2022-06-27 20:29:23 · 1755 阅读 · 0 评论 -
Assert “tcp_receive: ooseq tcplen > rcv_wnd“
tcp: tighten up checks for received SYNAny malicous segment could contain a SYN up to now (no check).A SYN in the wrong segment could break OOSEQ queueing.Fix this by allowing SYN only in states where it is required.See bug #56397: Assert "tcp_recei转载 2021-11-15 20:56:22 · 313 阅读 · 0 评论 -
[lwip-users] memp_malloc: out of memory in pool TCP_PCB
[lwip-users] memp_malloc: out of memory in pool TCP_PCBAnirudha Sarangi未读,2011年11月4日 下午4:32:00收件人Mailing list for lwIP usersHi,Recently after fixing my previous issue (I had an issue in sys_arch.c), I came across one interesting issue for .转载 2021-11-10 16:27:53 · 903 阅读 · 0 评论 -
一个响应ping包延迟偏大的问题
前段时间客户反馈一个使用pc上的命令行ping无线设备(WiFi4)时,设备平均响应时间(测试时长2小时,1秒Ping一次)相比其它机型偏慢的问题,并上传上具体的时间的Log.从log中看到,大多数包的响应还是比较快的,只是个别响应时间较长,且响应时间长的包时间几乎都是一样的100多ms.如下是部分响应时间截图. 整个2小时的测试时间里,总是时不时的出这么上102,104ms的响应时间,这直接导致了平均响应时间被拉大.于是本地测试,也发现了类似的延迟.本地测试时,现象略有...原创 2021-07-10 11:55:12 · 11009 阅读 · 2 评论 -
Win10下Wireshark找不到网卡的方法
在Windows10下,安装Wireshark时候,提示WinPcap不被系统系统支持。这是由于最新版的WinPcap4.1.3只支持到Windows8。如果在Windows10下安装,就会提示不兼容。这个问题有两种解决办法。第一种办法是,忽略警告,继续安装WinPcap。运行的时候,以兼容模式运行WinPcap。第二种办法是,安装Win10Pcap。这是WinPcap项目的一个分支软件。它支持Windows7/8/10。用户可以到http://www.win10pcap.org/downlo.原创 2021-05-11 20:25:04 · 1002 阅读 · 0 评论 -
iperf参数详解
Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。参数说明-s 以server模式启动,eg:iperf -s-c 以client模式启动,host是server端地址,eg:iperf -c 222.35.11.23通用参数-f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:ip转载 2021-01-15 09:59:22 · 9553 阅读 · 0 评论 -
TCP状态机详解
一、TCP状态机是TCP连接的变化过程。Tcp在三次握手和四次挥手的过程,就是一个tcp的状态说明,由于tcp是一个面向连接的,可靠的传输,每一次的传输都会经历连接,传输,关闭的过程,无论是哪个方向的传输,必须建立连接才行,在双方通信的过程中,tcp 的状态是不一样的。下面介绍一下,在三次握手和四次挥手的过程中的几种状态,如下图所示,是tcp状态的变化过程各种状态的解释LISTEN:侦听来自远方TCP端口的连接请求SYN-SENT:发送连接请求后等待匹配的连接请求SYN-R.转载 2020-12-02 10:55:40 · 12636 阅读 · 0 评论 -
libcurl 域名解析分析
背景我们公司的产品使用 libcurl 作为基础网络库,线上环境中经常会有域名解析失败导致的问题。libcurl 的域名解析默认情况下是调用系统 API 完成的,并且用户的网络环境可能比较复杂,比如:是否连接了代理服务器,是否开启防火墙,域名解析过程是不是被运营商劫持等等。所以对于此类问题,通常是只能在特定的机器和网络环境下复现,非常难确定具体原因。排查这类问题中我们也逐步有了一些想法:网络诊断工具 域名解析备份机制 域名解析 PK 机制这篇文章主要记录一下我是如何实现 libcurl转载 2020-11-17 15:07:40 · 2234 阅读 · 0 评论 -
TCP-IP详解:快速重传与快速恢复
快速重传算法快速重传算法在之前的文章中有介绍,如果收到一个out-of-order的报文段时, TCP需要立刻产生一个ACK,这个ACK不应该被延时,目的在于让对方知道收到一个失序的报文,并告诉对方自己希望收到的报文seq,我们不知道这个重复的ACK的原因,因为还是会等待少量的重复ACK到来,如果连续收到3个或者3个以上的dup ACK,就被判断这个报文被丢失了,于是就需要立即重传丢失的数据段,这个地方不用等待定时器溢出。更详细的介绍可以参考:TCP-IP详解:超时重传机制快速恢复算法TC.转载 2020-10-21 20:23:09 · 2230 阅读 · 1 评论 -
浅析TCP之SACK(选择性确认)
参考教材:TCP-IP Guide引入理由在文章TCP-IP详解:超时重传机制中,有介绍到快速重传和超时重传都会面临到一个重传什么包的问题,因为发送端也不清楚丢失包后面传送的数据是否有成功的送到。主要原因还是对于TCP的确认系统,不是特别的好处理这种不连续确认的状况了,只有低于ACK number的片段都被收到才有进行ACK,out-of-order的片段只能是等待,同时,这个时间窗口是无法向右移动的。举个例子:1. 服务发送4个片段给客户端,seg1(seq=1,len=80),se.转载 2020-10-16 19:41:41 · 4981 阅读 · 0 评论 -
TCP-IP详解:重传机制
参考教材:TCP-IP Guide超时重传是TCP保证数据传输可靠性的又一大措施,本文主要介绍重传TCP报文的两大举措:超时重传和快速重传超时重传机制超时重传指的是,发送数据包在一定的时间周期内没有收到相应的ACK,等待一定的时间,超时之后就认为这个数据包丢失,就会重新发送。这个等待时间被称为RTO. 检测丢失segment的方法从概念上讲还是比较简单的,每一次开始发送一个TCP segment的时候,就启动重传定时器,定时器的时间一开始是一个预设的值(Linux 规定为1s...转载 2020-10-16 19:21:24 · 1399 阅读 · 1 评论 -
浅谈TCP优化
很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱。Ilya Grigorik在「High Performance Browser Networking」中做了很多细致的描述,让人读起来醍醐灌顶,我大概总结了一下,以期更加通俗易懂。流量控制传输数据的时候,如果发送方传输的数据量超过了接收方的处理能力,那么接收方会出现丢包。为了避免出现此类问题,流量控制要求数据传输双方在每次交互时声明各自的接收窗口「rwnd」大小,用来表示自己最大能保存多少数据,..转载 2020-08-05 11:54:17 · 607 阅读 · 0 评论 -
TCP/IP 校验和算法简介
1.前言校验和计算是NAT功能和内容修改功能的基本功,这些操作进行后都需要修改数据头中的校验和。2.16位校验和计算2.1基本原理IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数则补一字节0。当收到数据后,同样对有效数据范围中每个16位数进行二进制反码的求和。由于接收方在计算...转载 2020-07-10 15:58:57 · 3587 阅读 · 0 评论 -
802.11协议中的广播与tcp/ip中的广播
这两种广播经常一起用,有时候总是分不清楚,这里记录一下以备忘.先说一下802.11协议中的广播,也就是通常所说的WiFi协议中的广播.它是指目的地址为FF:FF:FF:FF:FF:FF的帧,目的地址也就是通常说的address1的位置,也就是在802.11mac header的第5个字节起算的6个字节.这里以常见的广播包Beacon帧为例来看一下:可以看到它的address1处为全FF,此包由ap发出来,当然了sta也可以发送广播包.广播包与路由器本身没有直接关系.在空间中所有收到此包的设.原创 2020-07-08 20:29:20 · 2111 阅读 · 0 评论 -
skb head/data/tail/end/介绍
This first diagram illustrates the layoutof the SKB data area and where in that area the various pointers in 'structsk_buff' point.The rest of this page will walk throughwhat the SKB data area looks like in a newly allocated SKB. How to modify those...转载 2020-06-25 15:33:09 · 989 阅读 · 1 评论 -
DHCP详细工作过程
DHCP客户端通过和DHCP服务器的交互通讯以获得IP地址租约。为了从DHCP服务器获得一个IP地址,在标准情况下DHCP客户端和DHCP服务器之间会进行四次通讯。DHCP协议通讯使用端口UDP 67(服务器端)和UDP 68(客户端)进行通讯,UDP68端口用于客户端请求,UDP67用于服务器响应,并且大部分DHCP协议通讯使用广播进行。DHCP客户端和DHCP服务器的这四次通讯过程1、DHCP DISCOVER当DHCP客户端计算机处于以下三种情况之一时,触发DHCPDISCOVER广.转载 2020-06-02 14:27:53 · 1381 阅读 · 1 评论 -
网络协议系列之四:IGMP、ICMP和ARP
前言IGMP协议是一个组管理协议,它帮助多播路由器创建以及更新与每一个路由接口相连的忠实成员列表(就是与该路由接口连接频率较高)。ICMP协议实际上就是差错控制协议,弥补了IP协议没有差错纠正机制以及差错报告的缺憾。ARP是一个地址映射协议,可以把一个IP地址映射为MAC地址。IGMP协议1、IGMP是管理组成员关系的协议2、IGMP报文分为成员关系报告报文和成员关系查询报文。成员关系查询报文是为了查找网络中活跃的组成员而发送的报文,而成员关系报告报文是为了记录响应者在网络中的成员关系而发送的报文转载 2020-05-27 17:47:58 · 1679 阅读 · 0 评论 -
TCP:SEQ号与ACK号
三次握手Three-way Handshake一个虚拟连接的建立是通过三次握手来实现的1. (B) –> [SYN] –> (A)假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接.注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当A受到B发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN转载 2020-05-24 15:07:44 · 1576 阅读 · 1 评论 -
不抓包,如何学得了 TCP
Wireshark本机ip: 192.168.0.72访问地址: [http://www.cnblogs.com/tankxiao]()记录378,419,427就对应着著名的TCP三次握手数据帧格式如下三次握手流程图SYN:建立连接FIN:关闭连接ACK:响应PSH:数据传输RST:连接重制A->B:在吗?听的到吗?B->A:在啊?你听得到吗?(告诉A,通过B的回复来确认,A->B通信正常)A->B:听的见(告诉B,通转载 2020-05-24 13:05:36 · 344 阅读 · 0 评论 -
Ethernet_II帧和802.3_Ethernet帧格式比较
一、Ethernet帧格式的发展1980 DEC,Intel,Xerox制订了Ethernet I的标准1982 DEC,Intel,Xerox又制订了Ehternet II的标准1982 IEEE开始研究Ethernet的国际标准802.31983 迫不及待的Novell基于IEEE的802.3的原始版开发了专用的Ethernet帧格式1985 IEEE推出IEEE 802....转载 2020-05-05 11:22:28 · 6195 阅读 · 0 评论 -
多播(组播)原理分析
为什么要使用多播: 网卡从网络上接收到目标物理地址对应的所有bit位都为1的数据报时,会收到这条消息并将其上传给驱动程序,网卡的这种工作模式称为广播模式,网卡的缺省工作模式包含直接模式和广播模式。利用这一特性,UDP(用户数据报协议)还提供了向多个目标地址发送广播数据包的能力。广播数据即数据从一个工作站上发出,只要将数据包的目标物理地址对应的所有bit位都设为1,局域网内的所有工作...转载 2020-03-13 17:04:21 · 1050 阅读 · 4 评论 -
Ngrok: 使用 Ngrok 实现内网穿透
Jan 10,2017in教程read (14235)| 百度已收录 | Author:Leonn目录背景 NAT 穿透原理 一个栗子 Ngrok 准备工作 编译服务端 服务端 测试连接 编译客户端 客户端 未完待续 参考资料背景 很多时候,我们都有这样的需求:需要将本地正在开发的服务暴露在公网上,也就是从外网直接访问我们本机上的服务...转载 2019-11-06 17:24:16 · 243 阅读 · 0 评论 -
广播和地址
1. TCP/IP协议栈中, 传输层只有UDP可以广播.2. 只能对同一子网内部广播, 广播数据包不经过路由器.3. UDP的广播地址为255.255.255.2554. 在winsock实现中, 有一个选项对应是否允许广播.必须调用setsockopt打开该选项.5. 打开后, 用sendto向255.255.255.255发送的数据包全部广播.很多局域网都定义了一个特殊的保留地址, 称为广播地...转载 2018-02-26 09:17:10 · 632 阅读 · 1 评论 -
UDP 组播---你需要了解这些
先来了解下UDPUDP 是UserDatagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。UDP和TCP的区别:http://blog.youkuaiyun.com/l...转载 2018-02-24 16:40:23 · 7255 阅读 · 0 评论 -
lwip iperf 方法进行性能测试
硬件配置: STM32F407 + DP83848 + FreeRTOS V10.1.1 + LWIP 2.1.2 2018年12月5日14:31:241、先读取 PHY 寄存器 , 查看 自主协商 结果PHY自主协商结果:ETH_Mode ETH_Mode_FullDuplexPHY自主协商结果:ETH_Speed ETH_Speed_100M2、安...转载 2020-04-02 11:02:43 · 4070 阅读 · 3 评论 -
ESP32移植wolfssl方法
转自:https://www.jarviswang.me/?p=599自2015年ESP32发布以后,官方号称很牛逼,关注度也挺高,但实际上呢,我们这些拿到芯片开发的第一批用户来说,也踩了不少坑,文档渣、例子少,生态相比传统大公司比如TI,ST之流还是有很大差距,这次打算移植wolfssl这个库到ESP32上也费了不少劲,过程顺便记录下方便大家参考。wolfssl是一个轻量级的的SS...转载 2019-09-03 11:14:25 · 3258 阅读 · 4 评论 -
lwip mqtt + mbed TLS
https://mcuoneclipse.com/2017/04/17/tutorial-secure-tls-communication-with-mqtt-using-mbedtls-on-top-of-lwip/Tutorial: Secure TLS Communication with MQTT using mbedTLS on top oflwipPos...转载 2019-04-08 15:01:02 · 7541 阅读 · 0 评论 -
TCP Raw API questions about efficiency and threads
http://lwip.100.n7.nabble.com/TCP-Raw-API-questions-about-efficiency-and-threads-td26473.html Hi, LwIP RAW API is simple once you understand it. You do not create separate threads, all the...转载 2018-11-26 11:20:08 · 176 阅读 · 0 评论 -
lwip协议栈中超时定时器实现原理
lwip协议栈中超时定时器实现原理1,超时定时器存在的目的: tcpip协议中存在很多需要定时处理的任务,包括一次性超时处理和周期性超时处理。 以tcp传输为例,每条连接总共需要建立七个定时器,依次为: 1)“连接建立”定时器。 如果建立连接启动后75秒内没收到响应,则中止建立。 2)“重传”定时器 在...转载 2018-04-21 15:51:13 · 1141 阅读 · 2 评论 -
TCPIP and MAC thread task priorities
http://lwip.100.n7.nabble.com/TCPIP-and-MAC-thread-task-priorities-td28800.htmlI was looking through my codebase recently (a mix of code from LPC Open, and also a project I inherited) and I saw a comm...转载 2018-04-21 13:42:37 · 276 阅读 · 0 评论 -
stuck in a loop in tcp_input.c or tcp_output.c in lwIP v1.4.1
Search through millions of questions and answersAsk a related questionWhat is a related question? Ask a new questionGo to MicrocontrollersForumsThis thread has been locked.If you have a related questi...转载 2018-04-19 17:29:09 · 788 阅读 · 0 评论 -
LwIP tcp_output Pcb Corruption
http://lwip.100.n7.nabble.com/LwIP-tcp-output-Pcb-Corruption-td21239.htmlSponsored by Single Sushi - International dating that really workslwIP › lwip-usersLogin RegisterLwIP tcp_output Pcb Corruptio...转载 2018-04-19 16:26:44 · 742 阅读 · 1 评论 -
记一次lwip中 遇到 pcb == pcb->next 的pcb死循环debug过程
amoBBS 阿莫电子论坛标题: 记一次lwip中 遇到 pcb == pcb->next 的pcb死循环debug过程 [打印本页]作者: kayatsl 时间: 2013-10-11 17:44标题: 记一次lwip中 遇到 pcb == pcb->next 的pcb死循环debug过程本帖最后由 kayatsl 于 2013-10-11 17:50 编辑 [attach]1...转载 2018-04-18 16:22:33 · 5770 阅读 · 4 评论 -
lwip之数据收发流程_3
[bug #37271] endless loop seg = pcb->unacked; seg->next != NULL; seg = seg->nextClassicListThreaded5 messagesOptionsSimon Goldschmidt-2Reply|Threaded|MoreSep 05, 2012; 2:50pm[bug #372...转载 2018-04-18 15:37:36 · 1047 阅读 · 1 评论 -
lwip之数据收发流程_2
http://blog.sina.com.cn/s/blog_62a85b950101am9n.html#cmt_51E17993-7F000001-6D63FA89-86E-8A0转载 2017-10-19 09:25:17 · 3129 阅读 · 0 评论 -
lwip之数据收发流程_1
http://blog.youkuaiyun.com/banruoju/article/details/54340684转载 2017-10-18 18:21:51 · 2896 阅读 · 0 评论 -
编写优质嵌入式C程序
目录(?)[+]前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉。转载请注明出处:http://blog.youkuaiyun.com/zhzht19861011/article/details/45508029摘要:本文首先分析了C语言的陷阱和缺陷转载 2017-08-30 21:16:02 · 6269 阅读 · 0 评论 -
Socket,非阻塞,fcntl
随笔 - 71 文章 - 61 评论 - 32一、fcntl 用以下方法将socket设置成为非阻塞方式 int flags = fcntl(socket,F_GETFL,0); fcntl(socket,F_SETFL,flags|O_NONBLOCK); 将非阻塞的设置回阻塞可以用 i转载 2017-08-29 11:22:46 · 864 阅读 · 0 评论