Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
[lwip]第一周学习笔记二
发布于 2018-05-18 15:44:49 浏览:2858
订阅该版
[tocm] * 本帖最后由 朝雨绫萧 于 2018-5-18 15:51 编辑 * 虽然第一周的任务已经完成,但是对tcp/ip协议的不了解,导致对lwip的宏定义有很多不理解,对窗口大小,滑动窗口,RTT等都一头雾水。 以下为学习tcp/ip协议的笔记 # OSI参考模型 OSI 7层参考模型: TCP/IP 四层模型 : 应用层 表示层 应用层 应用程序 会话层 传输层 传输层 操作系统 网络层 网络层 数据链路层 链路层 设备驱动 物理层 网络接口 - 应用层 针对特定应用的协议。例如:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3 等。会在数据前面加首部信息。 - 表示层 将设备特定的数据格式转换成网络通用的数据格式。会在数据前面加首部信息。 - 会话层 决定采用何种连接方式发送信息,数据分割,会在数据前面加首部信息。 - 传输层 建立连接或断开连接和确认数据是否到达并数据重发。会在数据前面加首部信息。 - 网络层 将数据包发送到目标地址 - 数据链路层 附加含有 MAC 地址信息的首部,数据帧的生成与接收 - 物理层 比特流和电压信号的转换 - 应用层 DNS,URI,HTML,TLS/SSL,HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等 - 应用层 TCP,UDP,SCTP,DCCP等 - 互联网层 ARP,IP,ICMP # 传输方式的分类 - 面向有连接型(TCP)和面向无连接型(IP) - 电路交换与分组交换(蓄积交换) - 单播、广播、多拨、任播 # 地址 MAC地址、IP 地址、端口号等信息做为地址标识 - 地址具有唯一性 - 地址(IP 地址)具有层次性 # 帧构成 帧标识数据链路层中包的单位  # IP分包与组包 MTU:数据链路的最大传输单位,不同数据链路大小不同 以太网:1500字节 FDDI: 4352字节 ATM: 9180字节 ## IP Fragmentation(IP 分片处理) IP上层可能传送比 MTU 更多字节的数据,因此需要进行分片处理,即将较大的IP包分成较小的IP包,到目的地后会被组合起来传给上一层。 使能路径MTU会禁止IP分片 # IP地址 IP地址由32位正整数来表示,由网络地址和主机地址两部分组成 网络地址在数据链路的每个段配置不同的值,网络地址必须保证互相连接的每个段地址不相互重复,相同段内的主机必须拥有相同的网络地址。 相同段内的主机地址不允许重复出现。 网络地址和主机地址长度由子网掩码决定,对应网络地址的位为1,对应主机地址的位为0。 将主机地址全部设置为1后则形成广播地址。 # 传输层协议 在TCP/IP中能够实现传输层功能的,具有代表性的协议是TCP和UDP。 需要可靠传输时选用TCP协议,需要高速和实时性时选择UDP协议 ## TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议 。 TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 ## UDP UDP(User Datagram Protocol 用户数据报协议)是具有不可靠性的数据报协议。 由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。 # Socket 在RT-Thread上使用TCP或UDP时,会用到BSD Socket API,应用程序利用Socket,可以设置对端的IP地址,端口号,并实现数据的发送和接收。 # MSS 在建立TCP连接的同时,也可以确定发送数据包的单位,称之为“最大消息长度”(MSS:Maximum Segment Size)。最理想的情况是,最大消息长度正好是IP中不会被分片处理的最大消息长度。 MTU值需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes,所以一般MSS值为1460 # 窗口 TCP 每次发送一个段,就需要一次确认应答,影响通信性能,可以通过设置窗口来设置几个段才应答一次,一次对多个段进行确认应答。  窗口大小由接收端主机设置,发送端会发送不超过窗口大小的数据,也就是流量控制。 通信刚开始时,会启动慢启动,防止在网络拥堵时突然发送大量数据造成网络瘫痪 # 提高网络利用率的规范 ## Nagle算法 当发送端还有少量数据未发送时,会延迟发送。当满足以下两个条件之一时才立即发送。 - 已发送的数据都已收到确认应答 - 可以发送最大段长度的数据时 在对实时性有要求的领域使用TCP时会关闭对该算法的启用 ## 延迟确认应答 收到数据并不立即应答,而是延迟一会。 - 在没有收到2*最大段长度的数据为止不做确认应答 - 其他情况下,最大延迟0.5s发送确认应答(很多系统设置成0.2s左右) TCP采用滑动窗口的控制机制,因此确认应答少一些也无妨。 ## 捎带应答 根据应用层协议,发送消息到对端后,对端会返回一个回执,TCP的确认应答和回执数据可以通过一个包发送,可以减少收发数据量。需要开启延迟确认应答。
查看更多
1
个回答
默认排序
按发布时间排序
来一颗糖
2018-05-18
这家伙很懒,什么也没写!
赞一个
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
朝雨绫萧
这家伙很懒,什么也没写!
提问
10
回答
22
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
xiaorui
3
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部