2-网络编程学习环境搭建

工欲善其事,必先利其器,学习网络编程,不动手也是不行的。这里先介绍一下我使用到的相关工具软件。 1. 相关的软件 操作系统 Linux: ubuntu 14.4 + VM 虚拟机 Window: win7 ubuntu 和 vm 这些相信你都会安装,资源也相当好找。windows 系统随便你了,最好安装上一个 Visual Studio,如果你用其它比如 VC 6.0 这样的老古董也是没问题的,因为 Windows 上...
焦点技术 2018/03/31 759

1-网络协议基础

转载请注明出处:http://blog.csdn.net/q1007729991/article/details/69101159 很高兴你已经完成了 apue 的基础部分(Linux 环境编程学习笔记),如果你对这部分知识不甚了解,建议你先完成它。在 Linux 环境编程中,已经对基本的 socket 编程做了一个简单的介绍,如果你还没读那部分内容,建议你非常有必要再去看一遍,因为博客并不打算重复那基础知识。 为了能够顺利进入 u...
焦点技术 2018/03/31 1108

16-TCP 协议(同时关闭)

有同学会问,为什么不写同时打开?(同时打开指的是两端都是服务器,两端同时向对方建立连接请求)。 一方面,在我们实际生活中几乎遇不到;另一方面,很多操作系统实际都不能正确的支持同时打开,所以,这里就不写了,如果你对这个很感兴趣,请参考《TCP/IP 详解卷1:协议》的 18.8 小节。 1. 同时关闭 同时关闭,指的是已建立连接的两端同时发起主动关闭。 TCP 协议允许这种事情发生。见图 1. 图1 同时关闭 ...
焦点技术 2018/03/31 578

15-TCP 协议(半打开)

1. 半打开(Half-Open) 如果一方已经关闭或异常终止,而另一方却对此毫不知情,这种连接就称为半打开的。 比如:其中一端突然断网了,或者停电导致的异常关机。 假设在主机 A 和 B 之间建立了一条 TCP 连接,由于停电导致主机 B 异常关机。接下来,我们分三种情况讨论,A 此时继续给 B 发数据,会有什么现象。 B 仍然关机 B 开机,但是未启动服务 B 开机并重新启动了服务 2. 实验 serv ...
焦点技术 2018/03/31 616

14-TCP 协议(连接异常与RST)

1. RST 段 当 TCP连接出现严重的错误时,必须释放连接。通过将 TCP 首部中的 RST 标志位置 1,就可以通知对端发生错误,以终止连接。 我们在 TCP 协议(连接异常)一文中已经看到过这种错误,当时实验演示的是向一个不存在的端口建立连接,导致对端发送过来一个 RST 段。 2. 异常终止连接 正常情况下,关闭连接的方式是发送 FIN 段,即四次挥手。这种方式也称为有序释放(orderly release)。 ...
焦点技术 2018/03/31 873

21-TCP 协议(滑动窗口——抓包分析)

在上一文中我们已经介绍了滑动窗口的基本概念,以及它的目的。本文我们就亲自动手实践一下。 1. 环境准备 git 地址:https://git.oschina.net/ivan_allen/unp.git 服务器:unp/protocol/tools/tcpserver/sink_serv.c,部署在 Linux 上。 客户端:/home/allen/unp/protocol/tools/winclient/sink_clie...
焦点技术 2018/03/31 726

20-TCP 协议(滑动窗口——基础)

相信大家都遇到过这样的场景: 同学 Luffy 给你打电话,让你记下一串手机号码,可是你记忆力不太好,你跟 Luffy 约定,一次只最多只能报 4 个数字,Luffy 念一遍,如果你听到了就把他说的话重复一遍。接下来: 你:你一次最多报 4 个数字,多了我记不住啊! Luffy:139 你:139 (Luffy 知道你听到了) Luffy:7548 你:7538 (很明显你听错了) Luffy...
焦点技术 2018/03/31 543

19- TCP 协议(Nagle)

前面我们所用的 unp/protocol/tools/winclient/echo_cli.cpp 程序的特别之处是它总会发送一个小分组(TCP 段,只有 41 字节)到服务器。这样的小分组在英文中称为 tinygram,在网络状态好的情况下,比如局域网中,通常不会引起什么麻烦。但是在广域网中,这样的小分组会增加网络拥塞的可能。 为了能够减少这样的 tinygram 在网络中的数量,在 TCP 协议栈中,默认使用了 Nagle 算法。...
焦点技术 2018/03/31 403

18-TCP 协议(迟到的 ACK—— Linux)

在上一篇文章中已经分析了 windows 在回复确认时的情况,在接收到 TCP 段的情况下,等待 200ms 再回复 ack,除非在这 200ms 里接收方也有数据要发给对方,于是就在发送数据的时候将 ack 捎带过去。 本文我们分析 Linux 中的情况,我使用的是 Unbutu 14.4. 1. 实验 1.1 实验步骤 服务器 unp/protocol/tools/winserver/tcp_server.cpp,部署在...
焦点技术 2018/03/31 556

17-TCP 协议(迟到的 ACK —— Windows )

1. 引言 我们知道,TCP 协议中,需要对接收到 TCP 段进行确认。有两种方式可以减少 TCP 报文段. 一种是累积确认,另一种是捎带确认。 累积确认 有时候,发送方发送速度非常快,接收方一下下接收到了好几个 tcp 段,可以通过累积确认的方式,一次确认好几个 tcp 段,这样减少报文段的传输。 捎带确认 有时候,双方互相发送数据,当接收到对方的 tcp 段后,先不着急确认,而是等待一会儿,连同数据和 ack 一起...
焦点技术 2018/04/03 492

友情链接