![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程:TCP/IP & 知识点
文章平均质量分 91
海绵宝宝去哪儿了
目前在字节做android,慢慢干吧哈哈哈
展开
-
计算机网络知识点梳理:零散的一篇
1. 物理层的基本概念:物理层:确定与传输媒体接口的有关特性;(定义标准)4个特性:机械特性、电气特性、功能特性、2. 数据通信基础知识传统的使用公用电话网的数据通信模型数据通信的相关术语:三种通信方式:单工、半双工、全双工两种数据传输方式:串行、并行3. 码元、波特、速率、带宽码元: 一个码元就是一个信号,可以携带多个bit信息,一个码元代表一种离散数值;N进制码元:有N种离散状态(能表示N种信号)--> N种状态需要 log2N 个.原创 2020-10-12 18:48:52 · 433 阅读 · 0 评论 -
TCP中的TIME_WAIT状态
什么是TIME_WAIT呢?上面是TCP客户端向服务器申请链接-》传输数据-》断开连接的过程。在断开连接的4次握手过程中,执行主动关闭的那一端(也就是我们这个图中的客户端)将进入TIME_WAIT状态这个状态将持续2MSL的时间(最长分节生命周期:maximun segment lifetime),每一个TCP都有一个MSL的值大概在30s-2min不等。因此这个状态将持续1min-4m...原创 2019-12-11 15:02:51 · 228 阅读 · 0 评论 -
Part 2 Linux programming:chapter 18:多线程服务器端实现
内容概要:Web服务器端需要同时向多个用户提供服务,而进程的局限性使得人们开始利用更高效的线程来实现Web服务器端。18.1 线程的概念本章主要介绍线程的通用说明,是windows线程的基础。18.1.1 线程的背景之前第十章讲了多进程服务器端的实现,之后又利用select/ epoll函数实现I/O复用。多进程模型与IO复用相比确实有自身的优势,但是就像之前说过的,创建进程过程会...原创 2019-11-14 23:11:34 · 206 阅读 · 0 评论 -
Part 2 Linux programming:chapter 17:优于select的epoll(IO复用功能)
第十七章:优于select的epoll之前我们在第十二章中介绍了select函数。传统的I/O复用的方法有select函数和poll函数。但是其性能存在缺点(这点在下面会说到)。因此有了不同操作系统下的I/O复用技术,入Linux下的epoll、BSD的kqueue、Win的IOCP等。17.1 epoll理解及应用select函数的复用方法,无论如何优化程序性能也无法实现接入上百个客户端。......原创 2019-11-07 11:22:38 · 159 阅读 · 0 评论 -
Part 2 Linux programming:chapter 16:关于I/O流分离的其他内容
第16章:关于I/O流分离的其他内容什么是流?调用fopen函数打开文件后,可以通过返回值 与文件进行数据交换。因此说调用fopen函数后创建了流(stream)。FILE *fopen(const char *path,const char *mode);其中,path是我们要打开的流,而mode就是我们打开文件的方式了,也就决定你所打开的文件将被怎样的去对待啦,有如下几种方式:...原创 2019-11-03 10:41:14 · 134 阅读 · 0 评论 -
Part 2 Linux programming:chapter 15:套接字和标准I/O
第十五章:套接字和标准I/O15.1 标准I/O函数这里需要熟练掌握一些文件操作时使用的函数(fopen、feof、fgetc、fputs等)啥是标准I/O函数呢?下面列出一些常用的fopen fcloseFILE *fopen(const char *path,const char *mode);其中,path是我们要打开的流,而mode就是我们打开文件的方式了,也就决定你所...原创 2019-11-01 22:04:27 · 90 阅读 · 0 评论 -
Part 1 start network programming:chapter 14:多播与广播
第14章:多播与广播假设我们要向10000名用户发送相同的数据,如果使用TCP提供服务,则需要10000个套接字连接,即使使用了UDP套接字提供服务,也需要10000次数据传输。像这种需要向大量客户端发送相同数据时,会对服务器端和网络流量产生负面影响,这时可以使用多播技术解决。14.1 多播(Multicast)多播方式的数据传输基于UDP完成,区别在于,UDP数据传输以单一目标进行(一对...原创 2019-10-30 20:31:37 · 100 阅读 · 0 评论 -
Part 1 start network programming:chapter 13:多种I/O函数
第13章:多种I/O函数之前使用了基于linux的read & write函数完成数据的I/O,基于win则使用了send & recv函数。这里将在linux下使用 send 和 recv 以及readv writev函数13.1 send&recv函数之前光是说了一下,没讲解函数的具体内容,这里进行补充。13.1.1 Linux下的send & re...原创 2019-10-28 17:49:22 · 97 阅读 · 0 评论 -
Part 1 start network programming:chapter 12:I/O复用
第十二章: I/O复用之前我们采用多进程的方式实现了并发服务器端的构建,然而并发服务器端的构建并非只有这一种方法,下面我们在本章中通过I/O复用的方式,构建并发服务器端。重点思考一下,这两种方法有什么不同呢? 各自的优势又是什么呢?12.1 基于I/O复用的服务器端之前采用的多进程方法构建服务器端,在每次客户端请求连接时,就会创建新的进程因为创建进程需要大量的运算和内存空间,由于每个进...原创 2019-10-26 23:13:49 · 111 阅读 · 0 评论 -
Part 1 start network programming:chapter eleven:进程间通信
第11章:进程间通信上一章我们尝试了创建进程,本章讨论两个进程之间的交换数据的方法。11.1 进程间通信的基本概念进程间通信(Inter Process Communication)意味着两个不同进程之间可以交换数据,因此,需要操作系统中提供两个进程可以同时访问的内存空间。11.1.1 进程间通信的理解上一章中谈到,进程具有完全独立的内存结构,就连通过fork创建的子进程也不会与父进程共...原创 2019-10-25 19:55:52 · 128 阅读 · 0 评论 -
Part 1 start network programming:chapter ten:多进程服务器端
第十章 多进程服务器端10.1 进程概念及应用我们在收看视频的时候,无法忍受等待很久很久,因此服务器端的设计必须满足,当有多个客户端同时访问时,不能让大家按照顺序进行排队,这样叫什么服务?多进程就是解决这个问题的方法。10.1.1 并发服务器端的实现方法网络程序中 数据通信时间比CPU运算时间更多,因此,向多个客户端提供服务是一种有效利用CPU的方式。下面列出集中具有代表性的并发服务器...原创 2019-10-24 19:34:27 · 158 阅读 · 0 评论 -
Part 1 start network programming:chapter nine:套接字的多种可选项
第九章:套接字的多种可选项之前的套接字都是用的同一些参数并没有进行一些更改,这里介绍套接字具有的多种特性。同时更细致得观察套接字内部。9.1 套接字可选项和I/O缓冲大小套接字编程过程中,关注的重点往往是数据通信过程,而套接字的不同特性也是十分重要的。9.1.1 套接字多种可选项之前的实例在创建套接字时几乎使用的都是默认参数,没有进行更改,但其实是可以更改的,下面的图标中展示了其中一部...原创 2019-10-22 14:38:19 · 118 阅读 · 0 评论 -
Part 1 start network programming:chapter EIGHT:域名及地址名
第八章域名及地址名现在可能无人不知DNS,多多少少都听过,这到底是是个啥东西呢,与我们之前学的有什么关系呢?8.1 域名系统DNS是对IP地址和域名进行相互转换的系统,其核心是DNS服务器。8.1.1 域名是啥提供网络服务的服务器端也有自己的IP地址,但是IP地址很难记住,而类似www.xxx.com的域名却是很容易记住的,我们在客户端需要与服务器端进行连接,通常用域名取代IP地址。...原创 2019-10-20 10:44:05 · 123 阅读 · 0 评论 -
Part 1 start network programming:chapter SEVEN:优雅地断开套接字连接
什么是优雅地断开套接字连接呢?之前我们直接调用 close 或者在win 下调用 closesock函数单方面断开了套接字的连接7.1 基于TCP的半关闭掌握TCP的关闭过程是非常重要的,因为在建立连接的过程中是很稳定的,断开时是容易发生预想不到的情况的。7.1.1 单方面断开带来的问题单方面的切断连接会让动作发出者无法传输数据也无法接收数据。下图展示的是A方单方切断了连接带来的效果。...原创 2019-10-19 14:58:29 · 108 阅读 · 0 评论 -
Part 1 start network programming:chapter SIX: 基于UDP的服务器端/客户端
第六章:基于UDP的服务器端/客户端上面的第四章和第五章学习了TCP相关的东西。东西比较多,这里学习一下UDP。6.1 理解IDP在TCP/ IP协议栈中(在前面的文章中),上面第二层传输层分为TCP和UDP这两种方法。6.1.1 UDP套接字特点之前说过,UDP是面向消息的套接字,是不可靠的传输方式这个过程类似邮递信件,我们无法确认对方是否收到。这样说似乎TCP更好啊,为什么UDP...原创 2019-10-18 20:42:45 · 127 阅读 · 0 评论 -
Part 1 start network programming:chapter FIVE: 基于TCP的服务器端/客户端(2)
内容概要第四章通过回声示例讲了一下TCP的服务器/客户端实现方法~ 这只是编程角度,这里通过TCP原理角度出发,讲解这个过程,同时解决掉上一章末尾的问题。回声客户端的修正版tcp套接字中的io缓冲原理tcp工作原理(握手过程)正文5.1 回声客户端的完美实现5.1.1 只有回声客户端有问题?这里说的代码参见上篇文章。上篇文章我截取其中主要说的这部分如下所示,这里是客户端的一部...原创 2019-10-17 20:16:52 · 148 阅读 · 0 评论 -
Part 1 start network programming:chapter four : 基于TCP的服务器端/客户端(1)
第四章:基于TCP的服务器端/客户端(1)内容概述前面是 创建套接字socket和 向套接字分配地址bind的过程这里我们讨论通过套接字收发数据TCP与UDP的区别数据传输方式不同协议栈的层次关系:链路层->IP层->tcp/udp层->应用层。基于TCP的服务器端和客户端详解服务器端定义的两个套接字的用途 serv_sock和clnt_sock(一个当做门卫,一...原创 2019-10-16 15:22:07 · 134 阅读 · 0 评论 -
Part 1 start network programming:chapter three 地址族与数据序列
第三章 地址组与数据序列内容概要上一章讲了设置套接字 也就是 socket函数这章主要将如何为套接字分配IP地址和端口号IP地址的分类和区分网络字节序(大端序和小端序),htons htonl函数的使用inet_addr函数使用、inet_aton inet_ntoa函数使用正文3.1 分配给套接字的IP地址与端口号IP是 Internet Protocol (网络协议)的简...原创 2019-10-14 19:51:46 · 310 阅读 · 0 评论 -
Part 1 start network programming:chapter two:2.2 Windows平台下实现以及验证
2.2 Windows平台下实现以及验证Win下的实现方式基本类似,只要稍加了解socket函数的返回值类型就行2.2.1 Windows操作系统的socket函数Win下socket和Linux下名字一样,只有返回值不同,这里再次给出 Win下 socket函数的声明#include <winsock2.h>SOCKET socket(int af, int type, i...原创 2019-10-14 18:55:45 · 110 阅读 · 0 评论 -
Part 1 start network programming:chapter two:2.1 套接字协议及其数据传输
第二章:套接字类型与协议设置内容概览详细讲解socket函数的参数含义,以及涉及到的套接字协议#include <sys/socket.h>int socket(int domain, int type, int protocol)-> 成功时返回文件描述符,失败是返回-1参数说明: domain: 套接字中使用的协议族 (Protocol Family)信息 ...原创 2019-10-13 11:06:26 · 167 阅读 · 0 评论 -
Part 1 start network programming:chapter one:1.4 基于Windows的套接字相关函数及示例
1.4 基于Windows的套接字相关函数及示例1.4.1 Win与Linux下的对标Linux下:调用socket函数创建套接字调用bind函数分配ip地址和端口号调用listen函数转为可接受请求状态调用accept函数受理连接请求Windows下函数介绍:1. 创建套接字的函数 socket() 与Linux下不同SOCKET socket(int af, int ty...原创 2019-10-12 11:01:44 · 93 阅读 · 0 评论 -
Part 1 start network programming:chapter one:1.3 基于Windows平台的实现
正文1.3 基于Windows平台的实现win套接字简称 Winsock1.3.1 同时学习Linux和Windows目的两者其实差异不大1.3.2 为Windows套接字编程设置头文件和库作者用的是codeblocks 只需要在编译器-》链接器设置中添加E:\CodeBlocks\MinGW\lib\libws2_32.a(libws2_32这个库就ok啦,位置因人而异~)1....原创 2019-10-11 11:19:58 · 89 阅读 · 0 评论 -
Part 1 start network programming:chapter one:1.2 基于Linux 的文件操作
主要内容概览:文件描述符:系统分配给文件或套接字的整数。标准输入输出错误的文件描述符分别为:0,1,2文件IO函数: open close write read#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char* path,int f...原创 2019-10-11 11:12:24 · 154 阅读 · 0 评论 -
Part 1 start network programming:chapter one:1.1理解网络编程和套接字
主要内容概览:大致看一下套接字的使用方法相关函数:socket bind listen accept connect#include <sys/socket.h>int socket(int domain,int type,int protocol); 成功返回文件描述符,失败返回-1 #include <sys/socket.h> int bind(...原创 2019-10-11 10:40:38 · 113 阅读 · 0 评论