博客专栏  >  编程语言   >  Linux 网络编程学习笔记

Linux 网络编程学习笔记

Linux 环境编程的延伸,主要对 tcp/ip 详解和 unix 网络编程这两本书进行解读,非常适合初学者。从理论到实践,让你搞清楚网络编程的每一个细节!

关注
702 已关注
116篇博文
  • 0-Linux 网络编程学习笔记导航

    学习交流群: Linux 学习交流群 610441700 说明:本系列文章并不能取代 《UNP》这本旷世之作,文章中难免有错误与不足之处,希望读者们遇到有疑问的地方可以加群互相交流,共...

    2017-04-04 17:09
    5768
  • 113-给 udp 增加可靠性(一)

    先说一些题外话。 第 112 篇到这一篇,跨越了半年多时间。 并是说真的忙到了没时间写,中间因为毕业,找工作忙活了一阵子,导致写作被中断,后来就不了了之了~重新拾起笔需要很大有勇气。(因为我自己也...

    2018-01-27 23:10
    247
  • 114-给 udp 增加可靠性(二)

    这一节的目标是完成一个最简单的尽量可靠 UDP 程序,实现的功能如下: 客户端给服务端发送数据,服务端收到数据后立即将数据原样发送回去,进行确认。 客户端收到服务端的确认后,检查是不是自己刚刚发送...

    2018-01-28 17:54
    197
  • 115-并发的 UDP 服务器

    TCP 服务并发对我们来说已经不陌生了,你有各种手段处理,比如多进程,多线程,IO 复用 + 单/多线程。但是 UDP 处理并发,如果不仔细思考一下,可能你会觉得这没什么嘛,还不是和 TCP 差不多。...

    2018-02-04 13:11
    224
  • 112-封装 recvFromFlags

    在上一篇博文中,我们使用了 recvmsg 函数来获取标志位,但是每次填充 struct msg 结构体都相当费事,因此我们希望将这个过程封装成一个函数 recvFromFlags,一劳永逸。除了获取...

    2017-06-19 11:39
    569
  • 110-获取接口信息(二)

    1. 获取接口其它信息前面我们已经了解了 ioctl 的使用方法,现在我们希望获取更多的接口信息,最后将其封装成一个独立函数,名为 getIfiInfo.我们先来看看这个函数的演示示例,后面再给出详细...

    2017-06-09 09:34
    552
  • 111-UDP 数据报被截断

    1. 数据报被截断有时候我们有这样的需求,在 udp 数据报传输的过程中,如果对方发过来的数据报很大,而我们的接收缓冲区不足以容纳这么大的数据报,怎么办?此时 udp 数据报就会被截断,有没有一种办法...

    2017-06-09 11:09
    802
  • 108-网络接口

    1. 接口网卡,是让计算机通向外部世界的一扇大门。但是在计算机的世界里,一般这扇门称这“接口(Interface)”。接口是物理意义上的设备。在 Linux/Unix 中,我们使用 ifconfig ...

    2017-06-08 10:52
    599
  • 109-获取接口信息(一)

    1. 接口的其他信息 上一篇文章简要的介绍了接口的名字和索引号的概念,我们也可以通过一些函数去获取、转换它们。可是,接口除了这些信息外,还有很多其它信息,比如接口上配置的 ip 地址啊,子网掩码啦,...

    2017-06-08 21:13
    701
  • 106-多播地址

    1. 多播地址多播地址,类似“QQ群号”,它是 D 类 IP 地址(224.0.0.0~239.255.255.255)。D 类 IP 地址的首 4 位总是 2 进制 1111 开头,因此,可用的范围...

    2017-06-04 17:35
    705
  • 107-使用多播的 UDP C/S 程序

    在掌握了多播的相关基础后,本文我们通过实例来演示如何让你的进程加入多播组。1. 程序路径本文使用的程序托管在 gitos 上:http://git.oschina.net/ivan_allen/unp...

    2017-06-06 19:34
    714
  • 105-多播(基础)

    1. 引言多播(或叫组播,Multicast)的出现,正是为了解决广播的不足。我们已经学会用 udp 发广播数据包,然而,对于不想接收广播数据包的主机来说,这就是一种骚扰。比如某主机接收到以太网帧(目...

    2017-06-03 17:45
    547
  • 104-信号引起的竞争错误

    1. 引言之前我们学习过使用 alarm 信号这种奇技淫巧来实现带超时的 IO 函数,一直以来,我们写的这种程序都带有一个隐含的 bug.举例来说,我们可能经常会写下面这样的代码:alarm(2); ...

    2017-06-01 20:47
    792
  • 103-使用广播的 UDP 回射客户端

    讲了好几篇有关广播的理论,是时候实践一下了。这一次,需要将之前写的 udp 回射服务器和客户端拿过来,稍作修改。你可以直接去 unp/program/template 这个模板文件夹下面把 udp 的...

    2017-05-31 16:10
    661
  • 102-受限广播地址

    这种也称之为本地广播地址,它的目标地址为 255.255.255.255. 意思是只在本网络进行广播,绝对不会被路由器转发。1. 规则如果一台主机发送的 IP 数据报目标地址为 255.255.255...

    2017-05-26 13:30
    1055
  • 100-广播

    1. 引言在学习前面的 IPv4 地址的时候,你就已经注意到,有些地址被称之为广播地址(主机号全1),还有一类地址称为组播地址(D类地址)。从这一篇开始,我们需要做大量实验来学习广播。听起来很简单,但...

    2017-05-25 19:52
    568
  • 101-指向子网的广播

    我们将用三个实验来观察现象。1. 实验一1.1 网络拓扑图 图1 网络拓扑 1.2 实验步骤在主机 PC1 上 ping 广播地址 192.168.1.255,并在主机 PC1 上抓包。 ...

    2017-05-25 21:06
    634
  • 98-traceroute 程序

    traceroute 程序可以让我们看到 IP 数据报从一台主机传到另一台主机所经过的路由,该程序最早由 Van Jacobson 实现。当然我们不可能原汁原味的模仿一遍 traceroute 程序,...

    2017-05-23 12:12
    760
  • 99-IPv4 地址

    很久以前我们非常简单的讨论过 《IPv4 地址》,那时候是出于网络编程基础的需要,介绍了和 IP 地址相关的函数。这一次,我们来详细的讨论下 IP 地址的结构。1. IPv4 地址分类1981 年,标...

    2017-05-23 17:10
    800
  • 96-ICMP 协议(时间戳请求与应答)

    ICMP 时间戳请求允许系统向另一个系统查询当前的时间。1. ICMP 时间戳1.1 首部格式 图1 ICMP 时间戳请求与应答报文 它的 type 字段为 17(请求)或 18(应答),co...

    2017-05-21 18:10
    1699
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部