趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师
130417 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 51 讲
趣谈网络协议
15
15
1.0x
00:00/00:00
登录|注册

协议专栏特别福利 | 答疑解惑第三期

dst
src
nf_conntrack_tuple
nf_conntrack_tuple_hash
nf_conn
nf_conntrack_tuple_hash
ICMP_FRAG_NEEDED
ICMP_PROT_UNREACH
ICMP_DEST_UNREACH
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
使用select、epoll、kqueue、IOCP等系统调用管理事件机制
适用于多种平台
使用SO_LINGER,应用强制使用rst关闭
打开tcp_tw_reuse和tcp_timestamps选项
打开tcp_tw_recycle和tcp_timestamps选项
BGP协议将IP地址广播
IDC申请IP地址段和AS号
BGP协议与AS号
选择最好的路由
控制路由的传播
nf_conntrack_hash
SNAT一去一回的对应关系
icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info)
UDP
TCP
ICMP
libevent库
达到最优点的机制
Hash算法
基于时钟的计算
短连接过多
系统中查看连接状态的方法
TCP连接的数据结构
多线路互联
BGP协议
连接跟踪表
conntrack功能
内核
Socket
源地址不是单个主机的数据报
不是IP分片的第一片
作为链路层广播的数据报
目的地址是广播地址或多播地址的IP数据报
ICMP差错报文
ICMP查询报文可能会产生ICMP差错报文
跨平台程序的实现
TCP的BBR算法
TCP起始序列号的计算
TIME_WAIT状态过多的原因
查看TCP连接状态
TCP连接的定义
多线BGP机房
NAT过程中的连接跟踪
ICMP差错报文的发送者
ping使用的网络编程接口
不会产生ICMP差错报文的情况
ICMP差错报文
第7讲至第13讲的内容
协议专栏特别福利 | 答疑解惑第三期 你好,我是刘超。

该思维导图由 AI 生成,仅供参考

你好,我是刘超。
第三期答疑涵盖第 7 讲至第 13 讲的内容。我依旧对课后思考题和留言中比较有代表性的问题作出回答。你可以点击文章名,回到对应的章节复习,也可以继续在留言区写下你的疑问,我会持续不断地解答。希望对你有帮助。

第 7 讲 | ICMP 与 ping:投石问路的侦察兵

课后思考题

当发送的报文出问题的时候,会发送一个 ICMP 的差错报文来报告错误,但是如果 ICMP 的差错报文也出问题了呢?
我总结了一下,不会导致产生 ICMP 差错报文的有:
ICMP 差错报文(ICMP 查询报文可能会产生 ICMP 差错报文);
目的地址是广播地址或多播地址的 IP 数据报;
作为链路层广播的数据报;
不是 IP 分片的第一片;
源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。

留言问题

1.ping 使用的是什么网络编程接口?
咱们使用的网络编程接口是 Socket,对于 ping 来讲,使用的是 ICMP,创建 Socket 如下:
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)
SOCK_RAW 就是基于 IP 层协议建立通信机制。
如果是 TCP,则建立下面的 Socket:
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
如果是 UDP,则建立下面的 Socket:
socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本期答疑专栏《协议专栏特别福利 | 答疑解惑第三期》深入探讨了网络协议中的ICMP差错报文、网络编程接口等技术问题,为读者提供了有益的参考和指导。课后思考题中详细解答了网络包NAT过程中的连接跟踪机制和NAT网关的工作原理,留言问题中涉及了多线BGP机房、TCP连接状态、起始序列号计算等实际问题。通过本期答疑,读者可以深入了解网络协议技术知识,为他们在网络通信和故障排查中提供了重要参考。文章内容详实,涵盖了网络协议中的复杂技术问题,适合对网络协议感兴趣的读者阅读。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • po
    那ping呢?是如何nat的呢?

    作者回复: 通过 nf_conntrack_tuple 里面的内容,可以唯一地标识一个连接: src:包含源 IP 地址;如果是 TCP 或者 UDP,包含源端口;如果是 ICMP,包含的是 ID; dst:包含目标 IP 地址;如果是 TCP 或者 UDP,包含目标端口;如果是 ICMP,包含的是 type, code。

    2018-09-06
    11
  • 浪子
    建议使用ss命令来查看socket相关信息

    作者回复: 是的

    2018-09-01
    6
  • tommyCmd
    请问下netmask255.255.255.255 被允许吗,通常什么场景使用?

    作者回复: 允许,就是ip不出本机就可以,多用于一个假的ip地址作为虚拟ip的情况

    2018-08-27
    3
  • 小文同学
    谢谢极客时间为我们与老师搭桥
    2018-08-24
    7
  • 夜辉
    老师,ISN时钟是几乎4**微秒**加1,您解答的时候单位打错了 32位无符号整数,如果恰好是4微秒,2^32 / 1 * 4 * 10^(-6) / 3600 = 4.77h > 4.55h,因此时钟加1的速率会更快点。
    2020-12-14
    1
    3
  • Tom
    为什么存在大量的 TIMEWAIT,可能会导致无法发起新的连接呢?除了tcp超过6万多还有其他无法连接的情况吗?碰到过存在很多连接有时连不上,没想明白。
    2018-11-16
    1
    3
  • wuw
    tcp_tw_recycle这个选项已经被linux弃用了,该选项会影响nat后的数据包的接受
    2020-04-03
    1
    2
  • po
    那ping呢?也有ip和端口吗?
    2018-09-06
    2
  • 小龚小龚 马到成功 🔥
    还是不是很理解连接跟踪表那里,我的理解是,一个包由客户端发送给服务端的时候,经过NAT转换的时候就会给其分配一个端口号,记录在跟踪表中。当包回来的时候,根据这个端口号在连接跟踪表中查询,得到其要发送的服务端的ip信息。
    2021-05-19
    1
  • 清新灬小柠檬
    对我而言,真的可以说是非常详细,非常深入了。暂时还用不到这么深入的知识
    2019-10-10
    1
收起评论
大纲
固定大纲
《第 7 讲 | ICMP 与 ping:投石问路的侦察兵》
课后思考题
留言问题
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部