TCP/IP(lwip)
文章平均质量分 90
lwip TCP/IP协议实现分析
arm7star
这个作者很懒,什么都没留下…
展开
-
TCP/IP应用层协议实现 - 数据收发send/recv(lwip)
1、接收数据(recv)2、发送数据(send)原创 2021-05-29 21:05:59 · 3603 阅读 · 0 评论 -
TCP/IP传输层协议实现 - TCP的保活定时器(lwip)
参考《TCP-IP详解卷 1:协议》"第23章 TCP的保活定时器"原创 2021-05-29 18:38:51 · 1203 阅读 · 0 评论 -
TCP/IP传输层协议实现 - TCP的坚持定时器(lwip)
(参考《TCP-IP详解卷 1:协议》“第22章 TCP的坚持定时器”)1、糊涂窗口综合症《TCP-IP详解卷 1:协议》"22.3 糊涂窗口综合症"基于窗口的流量控制方案,如TCP所使用的,会导致一种被称为“糊涂窗口综合症SWS(Silly Window Syndrome)”的状况。如果发生这种情况,则少量的数据将通过连接进行交换,而不是满长度的报文段 [Clark 1982]。该现象可发生在两端中的任何一端:接收方可以通告一个小的窗口(而不是一直等到有大的窗口时才通告) ,而发送方也可以发原创 2021-05-24 22:46:26 · 927 阅读 · 0 评论 -
TCP/IP传输层协议实现 - TCP的超时与重传(lwip)
(参考《TCP-IP详解卷 1:协议》 第21章 TCP的超时与重传)1、往返时间测量(RTT)1.1、分组交换和RTT测量示例《TCP-IP详解卷 1:协议》中分组交换和RTT测量的示例。1.2、lwip RTT测量lwip RTT测量涉及rttest、rtseq、sa、sv变量,rttest为报文发送的时间,,rtseq为测量往返时间报文的序号,sa(rtt average estimator)、sv(rtt deviation estimator)为计算往返时间的变量。记录原创 2021-05-24 13:40:24 · 2467 阅读 · 0 评论 -
TCP/IP传输层协议实现 - TCP报文接收/发送(lwip)
(tcp的收发与接收窗口/发送窗口/通告窗口关联比较紧密,接收/发送过程在《TCP/IP传输层协议实现 - TCP接收窗口/发送窗口/通告窗口(lwip)》https://blog.csdn.net/arm7star/article/details/117153533都有介绍,本文对收发过程进行更详细一步介绍。)1、滑动窗口1.1、接收窗口(接收滑动窗口)接收窗口是本地可以接收数据的窗口,接收端只接收窗口内的数据,窗口外的丢弃。接收到数据,接收窗口左边沿右移,接收窗口减小。 .原创 2021-05-23 19:03:38 · 5282 阅读 · 0 评论 -
TCP/IP传输层协议实现 - TCP接收窗口/发送窗口/通告窗口(lwip)
1、tcp通告窗口/接收窗口/发送窗口接收端有一个接收窗口大小,接收端只能接收这么多数据,接收窗口的数据需要被上层接收后才释放更大接收空间,才可以接收更多数据;接收窗口之前的数据已经被接收,再次接收到接收窗口之前的数据可以认为是重复发送的,不处理,接收窗口之后的数据不能接收,超出接收范围直接丢弃。接收端通过tcp首部通告窗口字段告诉对端本地可以可以接收多少数据,用于控制发送端的发送窗口大小。发送端有一个发送窗口,发送窗口大小即为对端通告窗口的大小,只有发送窗口内的tcp报文才可以发送。发送窗口之原创 2021-05-22 23:59:24 · 7733 阅读 · 0 评论 -
TCP/IP传输层协议实现 - TCP连接的建立与终止(lwip)
1、lwip tcp相关数据结构1.1、tcp报文格式《TCP-IP详解卷 1:协议》TCP包首部结构如下:1.2、lwip tcp数据结构tcp相关数据结构如下,tcp_pcb_listen为服务器的监听tcp链表,各监听的tcp通过next指针连接成一个链表,tcp_pcb为tcp控制块(tcp_pcb_listen监听仅需要端口、ip地址等信息,tcp_pcb为通信过程的tcp控制块,需要包含tcp通信协议的数据等,tcp_pcb包含了tcp_pcb_listen所有的信息,因为监原创 2021-05-10 08:27:21 · 3949 阅读 · 0 评论 -
TCP/IP网络层ip协议实现(lwip)
1、lwip ip报文输入1.1 ip报文输入lwip线程ethernetif_input从网卡读取数据,根据ethhdr->type判断是否为ip报文,如果是ip报文,调用netif->input即tcpip_input通过邮箱发送数据给tcpip_thread线程处理。static voidethernetif_input(struct netif *netif){ struct ethernetif *ethernetif; struct eth_hdr *eth原创 2021-04-26 23:14:25 · 1711 阅读 · 0 评论 -
TCP/IP链路层ARP协议实现(lwip)
1、arp报文格式《TCP-IP详解卷 1:协议》P40中的ARP请求/应答报文格式如下所示:局域网链路层通信使用MAC地址,以交换机为例,连在一个交换机上的主机可以作为一个局域网,该网内的主机通过MAC地址通信;主机发数据到交换机时,交换机会记录该主机的MAC地址所在交换机的端口,其他主机发送报文到该主机时,交换机根据记录的MAC地址与端口的映射,找到对应MAC地址所在端口,然后从该端口把报文转发出去(转发到目的主机)。以太网目的地址、以太网源地址即为目的主机、源主机的MAC地址;帧类型表原创 2021-04-18 21:29:55 · 1034 阅读 · 0 评论 -
lwipwin32 lwip介绍 - 定时器实现原理及报文输入
1、arch相关代码介绍lwip是一个跨系统的tcp/ip协议栈实现,lwip只实现了tcp/ip协议栈部分,不同系统的线程创建及线程同步、通信实现有所不同,lwip提供了一个接口,不同的系统需要实现对应的接口即可。函数接口在lwipwin32\lwip\include\lwip\sys.h头文件中声明,使用操作系统时NO_SYS需要定义为0。1.1、定时器相关函数sys_init 定时器初始化sys_timeout 创建超时定时器(添加定时器到当前线程定时器链表)sys_u...原创 2021-04-18 17:56:21 · 1308 阅读 · 0 评论 -
tcp/ip协议栈之lwipwin32编译运行环境搭建及示例
(https://github.com/arm7star/lwipwin32)1、lwipwin32编译及运行软件WinPcap_4_1_3、Visual Studio 2015、VMWare(虚拟机网卡)。lwipwin32使用VMware Network Adapter VMnet8网卡收发报文。不使用VMWare网卡的话,在Window 10安装openvpn-install-2.4.8-I602-Win10也可,使用openvpn的虚拟网卡。2、VMware Network Adap原创 2021-04-18 13:52:09 · 961 阅读 · 0 评论