《TCP/IP网络编程》笔记
riba2534
没有谁生来就是神牛,而千里之行,始于足下!
展开
-
《TCP/IP网络编程》第 6 章 基于 UDP 的服务端/客户端 笔记
第 6 章 基于 UDP 的服务端/客户端本章代码,在TCP-IP-NetworkNote中可以找到。TCP 是内容较多的一个协议,而本章中的 UDP 内容较少,但是也很重要。6.1 理解 UDP6.1.1 UDP 套接字的特点通过寄信来说明 UDP 的工作原理,这是讲解 UDP 时使用的传统示例,它与 UDP 的特点完全相同。寄信前应现在信封上填好寄信人和收信人的地址,之后贴上邮票放进...原创 2019-01-17 16:11:02 · 708 阅读 · 0 评论 -
《TCP/IP网络编程》第 24 章 制作 HTTP 服务器端 笔记
第 24 章 制作 HTTP 服务器端本章代码,在TCP-IP-NetworkNote中可以找到。24.1 HTTP 概要本章将编写 HTTP(HyperText Transfer Protocol,超文本传输协议)服务器端,即 Web 服务器端。24.1.1 理解 Web 服务器端web服务器端就是要基于 HTTP 协议,将网页对应文件传输给客户端的服务器端。24.1.2 HTTP...原创 2019-02-07 20:17:16 · 861 阅读 · 0 评论 -
《TCP/IP网络编程》第 15 章 套接字和标准I/O 笔记
第 15 章 套接字和标准I/O本章代码,在TCP-IP-NetworkNote中可以找到。15.1 标准 I/O 的优点15.1.1 标准 I/O 函数的两个优点下面是标准 I/O 函数的两个优点:标准 I/O 函数具有良好的移植性标准 I/O 函数可以利用缓冲提高性能创建套接字时,操作系统会准备 I/O 缓冲。此缓冲在执行 TCP 协议时发挥着非常重要的作用。此时若使用标准 ...原创 2019-01-29 17:53:38 · 445 阅读 · 0 评论 -
《TCP/IP网络编程》第 12 章 I/O 复用 笔记
第 12 章 I/O 复用本章代码,在TCP-IP-NetworkNote中可以找到。12.1 基于 I/O 复用的服务器端12.1.1 多进程服务端的缺点和解决方法为了构建并发服务器,只要有客户端连接请求就会创建新进程。这的确是实际操作中采用的一种方案,但并非十全十美,因为创建进程要付出很大的代价。这需要大量的运算和内存空间,由于每个进程都具有独立的内存空间,所以相互间的数据交换也要采用...原创 2019-01-23 17:38:44 · 751 阅读 · 0 评论 -
《TCP/IP网络编程》第 18 章 多线程服务器端的实现 笔记
第 18 章 多线程服务器端的实现本章代码,在TCP-IP-NetworkNote中可以找到。18.1 理解线程的概念18.1.1 引入线程背景第 10 章介绍了多进程服务端的实现方法。多进程模型与 select 和 epoll 相比的确有自身的优点,但同时也有问题。如前所述,创建(复制)进程的工作本身会给操作系统带来相当沉重的负担。而且,每个进程都具有独立的内存空间,所以进程间通信的实现...原创 2019-02-03 16:05:48 · 1045 阅读 · 0 评论 -
《TCP/IP网络编程》第 14 章 多播与广播 笔记
第 14 章 多播与广播本章代码,在TCP-IP-NetworkNote中可以找到。14.1 多播多播(Multicast)方式的数据传输是基于 UDP 完成的。因此 ,与 UDP 服务器端/客户端的实现方式非常接近。区别在于,UDP 数据传输以单一目标进行,而多播数据同时传递到加入(注册)特定组的大量主机。换言之,采用多播方式时,可以同时向多个主机传递数据。14.1.1 多播的数据传输方...原创 2019-01-28 13:55:12 · 819 阅读 · 0 评论 -
《TCP/IP网络编程》第 17 章 优于 select 的 epoll 笔记
第 17 章 优于 select 的 epoll本章代码,在TCP-IP-NetworkNote中可以找到。17.1 epoll 理解及应用select 复用方法由来已久,因此,利用该技术后,无论如何优化程序性能也无法同时介入上百个客户端。这种 select 方式并不适合以 web 服务器端开发为主流的现代开发环境,所以需要学习 Linux 环境下的 epoll17.1.1 基于 sele...原创 2019-02-01 19:06:20 · 599 阅读 · 0 评论 -
《TCP/IP网络编程》第 11 章 进程间通信 笔记
第 11 章 进程间通信本章代码,在TCP-IP-NetworkNote中可以找到。进程间通信,意味着两个不同的进程中可以交换数据11.1 进程间通信的基本概念11.1.1 通过管道实现进程间通信下图是基于管道(PIPE)的进程间通信的模型:可以看出,为了完成进程间通信,需要创建进程。管道并非属于进程的资源,而是和套接字一样,属于操作系统(也就不是 fork 函数的复制对象)。所以,...原创 2019-01-22 11:40:32 · 592 阅读 · 1 评论 -
《TCP/IP网络编程》第 5 章 基于 TCP 的服务端/客户端(2) 笔记
第 5 章 基于 TCP 的服务端/客户端(2)本章代码,在TCP-IP-NetworkNote中可以找到。上一章仅仅是从编程角度学习实现方法,并未详细讨论 TCP 的工作原理。因此,本章将想次讲解 TCP 中必要的理论知识,还将给出第 4 章客户端问题的解决方案。5.1 回声客户端的完美实现5.1.1 回声服务器没有问题,只有回声客户端有问题?问题不在服务器端,而在客户端,只看代码可能...原创 2019-01-16 15:56:56 · 919 阅读 · 0 评论 -
《TCP/IP网络编程》第 13 章 多种 I/O 函数 笔记
第 13 章 多种 I/O 函数本章代码,在TCP-IP-NetworkNote中可以找到。13.1 send & recv 函数13.1.1 Linux 中的 send & recv首先看 sned 函数定义:#include <sys/socket.h>ssize_t send(int sockfd, const void *buf, size_t nb...原创 2019-01-26 23:08:54 · 592 阅读 · 0 评论 -
《TCP/IP网络编程》第 10 章 多进程服务器端 笔记
第 10 章 多进程服务器端本章代码,在TCP-IP-NetworkNote中可以找到。10.1 进程概念及应用10.1.1 并发服务端的实现方法通过改进服务端,使其同时向所有发起请求的客户端提供服务,以提高平均满意度。而且,网络程序中数据通信时间比 CPU 运算时间占比更大,因此,向多个客户端提供服务是一种有效的利用 CPU 的方式。接下来讨论同时向多个客户端提供服务的并发服务器端。下面...原创 2019-01-21 15:59:38 · 675 阅读 · 0 评论 -
《TCP/IP网络编程》第 4 章 基于 TCP 的服务端/客户端(1) 笔记
第 4 章 基于 TCP 的服务端/客户端(1)本章代码,在TCP-IP-NetworkNote中可以找到。4.1 理解 TCP 和 UDP根据数据传输方式的不同,基于网络协议的套接字一般分为 TCP 套接字和 UDP 套接字。因为 TCP 套接字是面向连接的,因此又被称为基于流(stream)的套接字。TCP 是 Transmission Control Protocol (传输控制协议...原创 2019-01-15 13:08:25 · 1094 阅读 · 0 评论 -
《TCP/IP网络编程》第 9 章 套接字的多种可选项 笔记
第 9 章 套接字的多种可选项本章代码,在TCP-IP-NetworkNote中可以找到。9.1 套接字可选项和 I/O 缓冲大小我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是,理解这些特性并根据实际需要进行更改也很重要9.1.1 套接字多种可选项我们之前写得程序都是创建好套接字之后直接使用的,此时通过默认的套接字特性进行数据通信,这里列出了一些套接字可选项。...原创 2019-01-19 17:37:18 · 496 阅读 · 0 评论 -
《TCP/IP网络编程》第 3 章 网络地址的初始化与分配 笔记
第 3 章 地址族与数据序列本章代码,在TCP-IP-NetworkNote中可以找到。把套接字比喻成电话,那么目前只安装了电话机,本章讲解给电话机分配号码的方法,即给套接字分配 IP 地址和端口号。3.1 分配给套接字的 IP 地址与端口号IP 是 Internet Protocol(网络协议)的简写,是为手法网络数据而分配给计算机的值。端口号并非赋予计算机的值,而是为了区分程序中创建的...原创 2019-01-14 13:13:37 · 1462 阅读 · 0 评论 -
《TCP/IP网络编程》第 8 章 域名及网络地址 笔记
第 8 章 域名及网络地址本章代码,在TCP-IP-NetworkNote中可以找到。8.1 域名系统DNS 是对IP地址和域名进行相互转换的系统,其核心是 DNS 服务器8.1.1 什么是域名域名就是我们常常在地址栏里面输入的地址,将比较难记忆的IP地址变成人类容易理解的信息。8.1.2 DNS 服务器相当于一个字典,可以查询出某一个域名对应的IP地址如图所示,显示了 DNS ...原创 2019-01-18 18:09:43 · 568 阅读 · 0 评论 -
《TCP/IP网络编程》第 2 章 套接字类型与协议设置 笔记
第二章 套接字类型与协议设置本章代码,在TCP-IP-NetworkNote中可以找到,直接点连接可能进不去。本章仅需了解创建套接字时调用的 socket 函数。2.1 套接字协议及数据传输特性2.1.1 创建套接字#include <sys/socket.h>int socket(int domain, int type, int protocol);/*成功时返回文...原创 2019-01-13 11:13:40 · 693 阅读 · 0 评论 -
《TCP/IP网络编程》第 7 章 优雅的断开套接字的连接 笔记
第 7 章 优雅的断开套接字的连接本章代码,在TCP-IP-NetworkNote中可以找到。本章讨论如何优雅的断开套接字的连接,之前用的方法不够优雅是因为,我们是调用 close 函数或 closesocket 函数单方面断开连接的。7.1 基于 TCP 的半关闭TCP 的断开连接过程比建立连接更重要,因为连接过程中一般不会出现大问题,但是断开过程可能发生预想不到的情况。因此应该准确掌控...原创 2019-01-18 11:25:54 · 616 阅读 · 0 评论 -
《TCP/IP网络编程》第 1 章 理解网络编程和套接字 笔记
第一章:理解网络编程和套接字本章代码,在TCP-IP-NetworkNote中可以找到。1.1 理解网络编程和套接字1.1.1构建打电话套接字以电话机打电话的方式来理解套接字。调用 socket 函数(安装电话机)时进行的对话:问:接电话需要准备什么?答:当然是电话机。有了电话机才能安装电话,于是就要准备一个电话机,下面函数相当于电话机的套接字。#include <sy...原创 2019-01-12 13:09:05 · 1214 阅读 · 0 评论 -
《TCP/IP网络编程》第 16 章 关于 I/O 流分离的其他内容 笔记
第 16 章 关于 I/O 流分离的其他内容本章代码,在TCP-IP-NetworkNote中可以找到。16.1 分离 I/O 流「分离 I/O 流」是一种常用表达。有 I/O 工具可区分二者,无论采用哪种方法,都可以认为是分离了 I/O 流。16.1.1 2次 I/O 流分离之前有两种分离方法:第一种是第 10 章的「TCP I/O 过程」分离。通过调用 fork 函数复制出一个...原创 2019-01-30 14:38:57 · 502 阅读 · 0 评论