C C++最新《后台开发核心技术与应用实践》(三)_核心技术开发,C C++开发者必看

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

七层五层四层
应用层
表示层
会话层应用层应用层
传输层运输层传输层
网络层网络层网间层
数据链路层数据链路层网络接口
物理层物理层

(2)TCP头格式和各字段说明
TCP头
(3)TCP状态流转
状态机三次握手
(4)TCP超时重传

重传超时时间RTO设置,1s、2s、4s、8s、16s符合Karm算法。待研究。

(5)TCP滑动窗口

  1. “窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”;
  2. “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。

(6)TCP拥塞控制

常用方法:

  1. 慢开始、拥塞避免
  2. 快重传、快恢复

6.2. TCP网络编程API

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
Socket

6.3. 实现一个TCPServer

参考代码

6.4.TCP协议选项

SO_REUSEADDR等选项,不太懂。

6.5. 网络字节序与主机序

(1)字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,一个字节的数据没有顺序的问题了。
(2)主机字节序就是我们平常说的大端和小端模式:不同的CPU有不同的字节序类型,这些字节序是指整数在内存中保存的顺序,这个叫做主机序。常见的有两种:a) Little-Endian就是低位字节排放在内存的低地址端;b) Big-Endian就是高位字节排放在内存的低地址端。
(3)网络字节序:4个字节的32 bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作大端字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。
(4)所以,当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后在进行传输。

6.6. 封包和解包

(1)TCP/IP 网络数据以流的方式传输,数据流是由包组成,如何判定接收方收到的包是否是一个完整的包就要在发送时对包进行处理,这就是封包技术。封包就是给一段数据加上包头,这样一来数据包就分为包头和包体两部分内容了
(2)包头其实上是个大小固定的结构体,其中有个结构体成员变量表示包体的长度,这是个很重要的变量,其他的结构体成员可根据需要自己定义.根据包头长度固定以及包头中含有包体长度的变量就能正确的拆分出一个完整的数据包
(3)利用底层的缓冲区来进行拆包时,由于TCP也维护了一个缓冲区,所以可以利用TCP的缓冲区来缓存发送的数据,这样一来就不需要为每一个连接分配一个缓冲区了.对于利用缓存区来拆包,就是循环不停地接收包头给出的数据,直到收够为止,这就是一个完整的TCP包。

7.网络IO模型

7.1.四种网络IO模型

本书中讲解了四种网络IO模型:阻塞IO模型、非阻塞IO模型、多路IO复用模型、异步IO模型。
《Unix网络编程》一书中提到了五种IO模型,分别是:阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。
io

7.2. select、poll、epoll用法

待学习!

8.网络分析工具

8.1. ping

8.2. tcpdump

tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 类型 ] [ -w 文件名 ] [表达式 ]

一些使用实例
(1)tcpdump -i eth0 host 192.168.0.250 —–在网口eth0上抓取主机地址为192.168.0.250的所有数据包。
(2)tcpdump -i eth0 net 192.168.0.0/24 —— 在网口eth0上抓取网络地址为192.168.0.0/24的所有数据包
(3)tcpdump -i eth0 port 80 —— 在网口eth0上抓取端口为80的所有数据包(注意,这里不区分是源端口还是目的端口)
当然,我们也可以指定源端口或目的端口
(4)tcpdump -i eth0 src port 80 and dst port6100 — 在网口eth0上抓取源端口为80且目的端口为6100的数据包,这里用到了and逻辑运算符,后面再介绍
(5)tcpdump -i eth0 icmp — 在网口eth0上抓取所有icmp协议的数据包

8.3. netstat

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 22
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值