Linux网络编程
Linux网络编程
~青萍之末~
弱者总有弱者的理由
展开
-
HTTPS原理详解
文章目录一、HTTPS简介二、对称加密和非对称加密1、对称加密(DES)2、非对称加密(RSA)3、RSA的原理三、一个HTTPS请求的流程一、HTTPS简介 HTTPS的本质就是在HTTP连接发起之前,先使用SSL/TLS协议,协调客户端和服务端,在两端各自生产一个对称加密算法的秘钥,然后以RSA(对之前生成的密钥进行非对称加密)的方式安全地传输数据。因为对称加密算法的秘钥是安全的,所以...转载 2019-03-26 19:37:56 · 4315 阅读 · 0 评论 -
内网和外网之间的通信
文章目录一、公有 IP 和私有 IP 的区别二、端口映射三、内网和外网的通信流程四、Linux命令行获取本机外网IP地址 对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外网的呢? 再者,我们大多人都是使用宽带上网,结果发现,A 和 B 的局域网 ...转载 2018-12-30 11:31:33 · 554 阅读 · 0 评论 -
从输入URL到页面加载完成发生了什么?
文章目录一、URL二、缓存三、DNS域名解析四、TCP连接五、浏览器向服务器发送HTTP请求六、浏览器接收响应七、页面渲染八、关闭TCP连接或继续保持连接 1. 浏览器的地址栏输入URL并按下回车。 2. 浏览器查找当前URL是否存在缓存,并比较缓存是否过期。 3. DNS解析URL对应的IP。 4. 根据IP建立TCP连接(三次握手)。 5. HTTP发起请求。 6. 服务器处理请求...转载 2018-12-09 19:33:45 · 645 阅读 · 0 评论 -
图解HTTP之确保Web安全的HTTPS
文章目录一、HTTP的缺点1、通信加密2、内容的加密二、HTTP+ 加密 + 认证 + 完整性保护=HTTPS1、使用两把密钥的公开密钥加密2、HTTPS 采用混合加密机制3、既然HTTPS安全可靠,那为何所有的Web网站不一直使用HTTPS?三、HTTPS工作原理四、确认访问用户身份的认证一、HTTP的缺点通信使用明文(不加密),内容可能会被窃取;不验证通信方的身份,因此有可能遭遇...原创 2018-12-09 19:15:19 · 597 阅读 · 0 评论 -
图解HTTP之HTTP状态码
文章目录一、状态码告知从服务器端返回的请求结果二、2XX 成功1、200:OK2、202:No Content3、206:Partial Content三、3XX重定向1、301:Moved Permanently2、302:Found3、303:See Other4、304:Not Modified5、307:Temporary Redirect四、4XX 客户端错误1、400 Bad Requ...原创 2018-12-09 17:28:45 · 605 阅读 · 0 评论 -
图解HTTP之HTTP报文和信息
一、HTTP报文 用于HTTP交互的信息被称为HTTP报文。请求端(客户端) 的HTTP 报文叫做请求报文, 响应端(服务器端) 的叫做响应报文。 除却空行(回车符、换行符),大致分为报文首部和报文主体。报文首部包含请求行(请求的方法、URI、HTTP版本)和状态行(响应状态码、原因短语、HTTP版本),首部字段(请求和响应的条件和属性),其他(未定义的首部)。【请求报文】:【响应报文】...原创 2018-12-09 16:56:36 · 379 阅读 · 0 评论 -
图解HTTP之简单的HTTP协议
文章目录一、HTTP用于客户端和服务器之间的通信二、HTTP是一种无状态协议三、告知服务器意图的HTTP方法1、GET:获取资源2、POST:传输实体主体(POST的主要目的并不是获取响应的主体内容)3、PUT:传输文件4、HEAD:获得报文首部5、DELETE:删除文件6、OPTIONS:询问支持的方法7、TRACE:追踪路径8、CONNECT:要求用隧道协议连接代理四、持久连接节省通信量五、使...原创 2018-12-09 16:44:05 · 394 阅读 · 0 评论 -
图解HTTP之了解web及网络基础
文章目录一、HTTP简介二、网络技术TCP/IP三、与HTTP关系密切的协议:IP、TCP、DNS1、IP2、TCP3、DNS四、各种协议与HTTP协议之间的关系五、URI和URL一、HTTP简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。HTTP协议位于TCP/IP协议栈的应用层。 HTTP是一个客户端和服务器端请求和应答的标准,主要用...原创 2018-12-09 16:22:33 · 429 阅读 · 0 评论 -
select、poll、epoll总结
一、select总结 select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。【优点】:select()的可移植性...原创 2018-11-08 16:37:53 · 1357 阅读 · 0 评论 -
epoll原理详解及epoll反应堆模型
设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linux2.4版本以前,...原创 2018-11-08 15:40:03 · 108567 阅读 · 24 评论 -
IO 多路复用之epoll(高效并发服务器)
epoll 是在 2.6 内核中提出的,是之前的select和 poll的增强版本。相对于 select和 poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的 copy 只需一次。一、epoll函数详解#include <sys/epoll.h>int ...原创 2018-11-04 17:17:30 · 2362 阅读 · 0 评论 -
IO 多路复用之poll(高效并发服务器)
poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll() 没有最大文件描述符数量的限制(但是数量过大后性能也是会下降)。poll() 和 select() 同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描...原创 2018-11-04 16:28:40 · 806 阅读 · 0 评论 -
IO 多路复用之select(高效并发服务器)
一、I/O 多路复用概述 I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。 select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪,就是这个文件描述符进行读写操作之前),能够通知程序进行相应的读写操作。但s...原创 2018-11-04 15:51:48 · 4401 阅读 · 3 评论 -
多进程和多线程并发服务器编程模型
在网络程序里面,一般来说都是许多客户对应一个服务器(多对一),为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器模型有:迭代服务器:服务器在同一时刻只能响应一个客户端的请求;并发服务器:服务器在同一时刻可以响应多个客户端的请求。一、多进程并发服务器的概念 在 Linux 环境下多进程的应用很多,其中最主要的就是网络/客户服务器。多进程服务器是当客户有请求时,...原创 2018-11-04 11:27:42 · 1716 阅读 · 0 评论 -
TCP协议详解(TCP报文、三次握手、四次挥手、TIME_WAIT状态、滑动窗口、拥塞控制、粘包问题、状态转换图)
文章目录一、TCP报文二、三次握手三、四次挥手四、TIME_WAIT状态五、connect()、listen()和accept()三者之间的关系六、三次握手、四次挥手总结七、滑动窗口(流量控制)八、拥塞控制九、粘包问题十、TCP状态转换图一、TCP报文【重要的字段】:序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记;确认序号:Ack序号...原创 2018-10-28 16:36:33 · 19506 阅读 · 13 评论 -
TCP协议简介
一、TCP概述 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。【TCP的特点】:面向连接型的传输协议:每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程;可靠、出错重传、且每收到一个数据都要给出相应的确认,保证数据传输的可靠性;TCP连接是基于字节流的,而非报文;传输单位为...原创 2018-10-28 14:28:40 · 1566 阅读 · 0 评论 -
UDP广播与多播
一、UDP广播1、广播的概念 使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。 网络上的广播指:由一台主机向该主机所在子网内(同一个局域网)的所有主机发送数据的方式。2、广播的特点 实现广播,离不开...原创 2018-10-28 13:43:01 · 19384 阅读 · 0 评论 -
UDP协议详解
一、UDP概述 UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的传输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很...原创 2018-10-24 19:19:00 · 17866 阅读 · 0 评论 -
socket套接字及缓冲区详解
套接字是一种通信机制(通信的两方的一种约定),凭借这种机制,不同主机之间的进程可以进行通信。我们可以用套接字中的相关函数来完成通信过程。 套接字的特性有三个属性确定,它们是:域(domain),类型(type),和协议(protocol)。#include<sys/types.h>#include<sys/socket.h>int socket(int dom...原创 2018-10-15 17:16:34 · 17523 阅读 · 4 评论 -
网络字节序和IP地址详解
一、网络字节序 字节序是指多字节数据的存储顺序,在设计计算机系统的时候,有两种处理内存中数据的方法:大端格式、小端格式。小端格式(Little-Endian):将低位字节数据存储在低地址;大端格式(Big-Endian):将高位字节数据存储在低地址。 举个简单的例子,对于整形 0x12345678,它在大端格式和小端格式的系统中,分别如下图所示的方式存放:【下面例子为确定主机...原创 2018-10-15 16:47:53 · 7755 阅读 · 1 评论 -
无连接和面向连接协议的区别
网络编程中最基本的概念就是面向连接(connection-oriented)和无连接(connectionless)协议。尽管本质上来说,两者之间的区别并不难理解,但对那些刚刚开始进行网络编程的人来说,却是个很容易混淆的问题。这个问题与上下文有些关联:很显然,如果两台计算机要进行通信,就必须以某种形式“连接”起来,那“无连接通信”又是什么意思呢? 答案是:面向连接和无连接指的都是协议。也就...转载 2018-10-15 16:01:26 · 31580 阅读 · 2 评论 -
网络协议入门
我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?为了使各种不同的计算机之间可以互联,ARPANet指定了一套计算机通信协议,即TCP/IP协议( 族 ),它们对电脑如何...转载 2018-10-15 15:21:22 · 737 阅读 · 0 评论