vlambda博客
学习文章列表

TCP/IP基础通讯知识(BP指南)

对网络通讯感到好奇?不如花时间来学习!


TCP通讯讲解教程推荐

1 耗时比较短的教程(纯代码讲解)

https://www.bilibili.com/video/BV1VC4y187vH?p=9

2 体系比较完善的教程(英文文档讲解原理+代码讲解)

https://www.bilibili.com/video/BV1TA411q75p?p=5

3 图文并茂讲解教程(示意图较多)

https://www.bilibili.com/video/BV1Br4y1h7gP?p=46&spm_id_from=pageDriver


linux系统网络基础  OSI 7层网络通讯模型数据传输的过程

1 物理层  数据链路层  网络层  传输层  会话层  表示层  应用层

每一层都会额外加上每层的头部信息信息  叫做封包  封包之后 一包数据会行程一帧数据

数据传输方式

协议组成  OSI数据传输模型 数据传输过程


2  TCP/IP协议栈模型

TCP/IP基础通讯知识(BP指南)

IP对应的是internet protocl网络协议

IP协议是TCP模型中最重要的协议   适用范围主要是网络层  为TCP UDP ICMMP协议提供数据传输的通道

数据报文的分段,当传送的数据大于MTU时  将数据进行分段发送和接收 并重新组装


socket通讯讲解

1 端口主要用于区分同一个主机上,不同应用

2 功能框图展示   套接字 对应的就是一层一层包装字符TCP/IP基础通讯知识(BP指南)

3 TCP对应的全称是 Transmission control protocol 传输控制协议

4 服务器会被动等待客户端连接,自己不会主动发出请求

5 UDP英文全称  user datagram  protocol 用户报文协议 udp不会自动回传丢失的数据包

6 udp不对数据进行检查  因此udp拥有更小的时延 占用更少的系统资源  主要应用在视频通话这种情况 或者是语音通话

7  python中with代表语法糖  当with语法结束的时候 会销毁 使用with自动定义的变量

8 代码调试中 先对服务器进行调试 之后使用上位机工具与服务器进行通讯,服务器调试完成  之后开发客户端 做客户端上基础功能测试

9 使用多线程可以处理 通信中问题  也可以使用异步IO解决通信中问题 

10 HTTP协议是TCP协议的一个典型应用,也是浏览器与服务器交互的主要方式

TCP/IP基础通讯知识(BP指南)

11 200代表请求成功  404代表请求的资源不存在

12 python -m http.server 8000  对应的是python中提供的服务器


代码解读Socket通讯

1 服务端进行启动,需要设置对应端口,客户端向服务端发出请求,按照端口数据 可进行链接

初始化之后,就是持续的对数据监听

TCP/IP基础通讯知识(BP指南)

strcat实现的功能是,向指定数组中追加数据

socket通讯准备,先启动服务端 后开启客户端

2 使用同一台电脑可以进行服务端+客户端测试  定义指定端口号 之后就可以开始测试

3 使用对应的TcpClient.Write(数组名称) 就可以实现客户端上数据通信 

4 实际应用中TCP通讯是超级简单的,底层都有对应封装好的库文件

5 网络通讯中,基础知识是比较重要   开始学习基础的知识   

6 客户端和服务端数据交互延时很短 发送数据后 可直接接收返回的数据

7  socket通讯完成之后 使用close(socket(对象))释放内存中申请到资源

8 不同的软件有不同的端口,常见的软件端口数值偏小

9 send函数说明 send函数返回的数据要是小于0 对应的是通信链路不可用

TCP/IP基础通讯知识(BP指南)

11 服务端有两个socket 一个用于监听的socket,还有一个是accept函数创建的socket,用于与客户端通信

12 socket申请一般不会失败,除非是板子中资源耗尽

13 linux操作系统中可以吧所有的处理方式都归结为IO

14 系统默认打开的socket总数是1023个,这个数据是可以进行手动修改

15 端口使用重叠,IP设置超出8字节限制,以及ip没有正确设置 都会造成设备连接出现异常

16 listen函数一般不会返回错误,实际使用中需要加上返回参数判断 

17 accept函数使用中会产生阻塞的效果 连接异常之后 就会被阻塞

18  要是有云服务器,就可以运行程序到云服务器上,之后各种设备作为客户端,跟服务器进行数据交互,可完成完整的linux闭环通信

19 使用send函数进行大数量字节发送,需要调用多次send函数进行数据发送,否则很有可能导致 开始发送的数据不完整

20 发送数据,返回值是发送的数据长度

TCP/IP基础通讯知识(BP指南)


21 send函数 使用中要是网络已经断开连接 函数也不会直接发生报错,对应就是软件容错率会比较高

22 linux中调试代码 可以使用gdb工具进行,使用指令就可以进行单步调试 ,后续需要进行研究

23 recieve函数中要是出现异常,第一次程序运行不会出现报错提示,后续运行会出现管道破裂的错误提示

24  对于通讯学习,可以自己使用代码进行测试,修改部分参数 之后进行验证

25 函数小结

TCP/IP基础通讯知识(BP指南)

服务端以及客户端  实际上都是相对的

通讯的方式根据业务的需求 可以进行自定义设置

26 基础代码学习完成 查找异核通讯相关的使用技巧

27  gdb进行代码调试,技巧需要完全掌握

28 函数只是socket通信中入门的第一步,后续通信管控 才是难点

29 windows上socket通讯跟linux上通信不同 

30 c语言实现Socket简单通信

31 代码混乱时,需要对代码中必须得部分进行分离,最终形成代码封装

32 gethostbyname   linux中对数字以及字符串转化 或者是判断 关键字  需要进行认识

34 视频中有讲解到线程使用 ,需要进行学习,因为虚拟串口上数据交互的方式,不支持中断的形式,只能借助外界的资源进行数据操作

https://www.bilibili.com/video/BV1tp4y1i7rL?p=98

 TCP/IP基础通讯知识(BP指南)



TCP协议概述

1 停留在运维的状态,学习到前边的网络模型之后 就已经足够自身使用

2 IP数据报文(不做掌握 只做了解)

TCP/IP基础通讯知识(BP指南)

4 ICMP报文(网络控制报文协议)

总共是32字节

icm报文格式  用来传递差错信息,时间,回显,网络信息等报文控制数据


5 TCP协议是针对IP协议增加了部分功能 ,功能有 确认重发 滑动窗口 以及复用等机制

6 通常说的协议  一般是两个协议 一个是ip协议 一个是tcp协议   

7 TCP提供了稳定的 安全的,面向连接的字节流服务

8 使用tcp协议 进行数据传输时应用程序之间传输数据时 可以视为无结构字节流

9 基于字节流的服务没有字节序问题的困扰  (传输协议可自己解决数据传输的问题?

  面向连接的服务:在数据传输之前TCP协议需要先建立连接

之后的报文在此基础上进行数据传输

10 TCP协议面向连接的单薄协议,对应三种方式,单播,组播,广播

单播:在数据发送和接收钱 通信双方必须在彼此之间建立一条连接  一对一的通讯,有来言,有去语

广播:一对多的服务  通常用在交换机或者是其他应用

11 建立连接的时候 使用三次握手  断开连接的时候 使用四次挥手 断开一个连接

12 tcp输出数据三个阶段:建立连接  数据传输  断开连接

13 对于知识点以及知识面  最好是使用思维导图的形式进行学习或者是进行整理,容易行程思维宫殿

14 需要对前置的信息 进行充分的理解之后 (背)之后对细节进行学习  前置信息基本都是面试题目



虚拟文件系统

1 ll指令 按照列表的形式,进行文件列出

2 df查看设备MMC使用情况

3 df -h  对应的是按照时间格式进行文件排列

4 boot中文件是进行挂载运行的,可以对文件进行卸载以及挂载操作

5 硬连接 对应磁盘中指向是同一个文件  软连接  对应


TCP/IP模型(ip协议对应的是网络之间互联的协议

1 网络模型有两种方式,一种是五层,一种是四层,五层后三层(应用层,表示层,会话层)集中到一起

四层的情况下 在前边的处理方式下  还有将 第一层第二层进行合并(物理层,数据链路层)统称为网络接口层

3 在senos7上可以使用yum install -y net -tools指令进行安装包安装

7 路由器  以及交换机中对于IP的处理方式是不同的  交换机不能对设备进行IP分配  路由器可以对设备进行ip分配

9 ip协议对应的是网络之间互联的协议  互联网包括物联网所有计算机网络通讯的一套规则

10 IOT等设备也需要遵守规则  

11 规定了计算机在网络中进行通信时应当遵守的规则

13 查看网关信息,表示方法有两种一种是0.1.另外一种是0.254.查看网关信息要是查询不通  需要变通