博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。
阅读量:4081 次
发布时间:2019-05-25

本文共 971 字,大约阅读时间需要 3 分钟。

网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。

 

是不是可以就理解成一个封装好的库,可以直接调用一些API函数方便操作。就像STM32的固件库。就像别人写好的驱动,你也只需要调用一些API函数就可以了。

TCPIP那些比如三次握手,每帧消息格式,交给协议栈去弄。

 

可能确实要实现网络通信,不是插个网线那么简单的事情,你要用网线通信也得符合网线的通信协议。不对,它有不同层的协议,对的,TCPIP属于比较上层的协议。最底层的串口可能只负责把消息送达。但是消息里面它也得遵循一些协议,要对你的消息进行解包分析。

是的,你要实现网络通信,单有个网卡的驱动肯定是不够的,网卡只能说给你把东西发送出去,但是单单这样还不够的。

进而我又想起了linux的网络编程,我感觉本质可能也是讲这些。我以前似乎把linux网络哦编程和linux多线程编程应用层编程混导一起去了,你以前可能真的对网络编程没有一个真正具体的认识,理解得还不到位。现在你应该清楚地认识到,网络编程是网络编程,多线程编程是多线程编程。

我觉得网络编程更偏向于底层,内核层,进程编程,多线程编程更偏向于应用层,这两者应该要区分开。而不是像之前理解的把这几个揉成一个东西。

我现在对网络编程也有了更为清晰的认识,也是得感谢华清那个串口课,明白了这个,后面才明白驱动,再才明白网络协议栈。

拍自《深度实践嵌入式linux系统移植》

 

看了下linux的网络编程确实是要学TCP编程 UDP编程,确实是的。感觉可能就像驱动一样,你之前可能觉得网络编程有什么好写的,有什么重要的,可能就像你以前都是直接调用别人写好的驱动,所以对于驱动也没什么概念。调用别人的惯了,都不知道底层真的实现,其实不容易,其实很值得弄弄,那也才是你的价值。

 

说Linux有丰富的网络协议栈是不是就是指有很多网络这方面的库。

 

我哪怕用个ftp,估计也是要写个协议栈。

 

很多东西理解深了理解透彻了就变得有意思了。当初学模电也是这种感觉嘛。

 

 

之前看到协议栈总感觉是个很抽象的东西。现在应该可以更具象地把握。

 

有点像比如UART串口驱动,串口驱动就是把你想发的数据,转换成UART协议格式的数据发出去,这下面的转换不需要你去做。

 

下面拍自《跟工程师学嵌入式开发》

转载地址:http://gjlni.baihongyu.com/

你可能感兴趣的文章
面试题目
查看>>
各个公司前端笔试题回顾
查看>>
进阶vue全家桶
查看>>
调起地图App实现路径规划导航等
查看>>
一步一步学习 ReactNative + Redux(2)
查看>>
一步一步学习 ReactNative + Redux(3)
查看>>
一步一步学习 ReactNative + Redux(3.1:bug修复)
查看>>
一步一步学习 ReactNative + Redux(3.2:优化,消除魔术字段)
查看>>
一步一步学习 ReactNative + Redux(4:中间件)
查看>>
一步一步学习 ReactNative + Redux(5:异步Action)
查看>>
一步一步学习 ReactNative + Redux(6)
查看>>
react-redux中的connect方法解析
查看>>
使用原生redux模块在React组件之间实现数据共享小实例
查看>>
利用react-redux实现react组件数据之间数据共享
查看>>
ES7的Async/Await 异步
查看>>
快速理解和使用 ES7 await/async
查看>>
基于最新版本React Native实现JsBundle预加载,界面秒开优化
查看>>
一个基于 React Native 的 Android 企业级应用。
查看>>
Android项目代码
查看>>
react-router跳转传值
查看>>