随笔分类 - 计算机网络
摘要:本文转载自四种常见的 POST 提交数据方式 导语 HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。 我们知
阅读全文
摘要:本文转载自HTTP 协议中的 Transfer-Encoding 导语 本文作为我的博客「HTTP 相关」专题新的一篇,主要讨论 HTTP 协议中的 Transfer-Encoding。这个专题我会根据自己的理解,以尽量通俗的讲述,结合代码示例和实际场景来说明问题,欢迎大家关注和留言交流。 Tran
阅读全文
摘要:本文转载自一些安全相关的HTTP响应头 导语 现代浏览器提供了一些安全相关的响应头,使用这些响应头一般只需要修改服务器配置即可,不需要修改程序代码,成本很低。本文介绍一些这样的响应头: Strict-Transport-Security HTTP Strict Transport Security,
阅读全文
摘要:本文转载自密钥交换(密钥协商)算法及其原理 导语 本系列的前一篇,咱们聊了“密钥交换的难点”以及“证书体系”的必要性。今天这篇来介绍一下实战中使用的“密钥协商算法”。 密钥交换/协商机制要达到啥目的? 前一篇介绍了 SSL/TLS 的身份认证机制。这个机制是为了防止攻击者通过【篡改】网络传输数据,来
阅读全文
摘要:本文转载自SSL/TLS协议详解(下)——TLS握手协议 导语 在博客系列的第2部分中,对证书颁发机构进行了深入的讨论.在这篇文章中,将会探索整个SSL/TLS握手过程,在此之前,先简述下最后这块内容的关键要点: TLS适用于对称密钥 对称密钥可以通过安全密钥交换算法共享 如果请求被截获,密钥交换可
阅读全文
摘要:本文转载自SSL/TLS协议详解(中)——证书颁发机构 导语 上一篇中,我们讨论了关于Diffie Hellman算法的SSL/TLS密钥交换。我们最终认为需要第三方来验证服务器的真实性,并提出了证书颁发机构的机制。博客系列的最后两部分的主要内容: TLS加密客户端-服务器通信并阻止中间人攻击。 编
阅读全文
摘要:本文转载自SSL/TLS协议详解(上):密码套件,哈希,加密,密钥交换算法 导语 作为一名安全爱好者,我一向很喜欢SSL(目前是TLS)的运作原理。理解这个复杂协议的基本原理花了我好几天的时间,但只要你理解了底层的概念和算法,就会感觉整个协议其实很简单。在学习SSL运作原理的过程中,我获益匪浅。回想
阅读全文
摘要:本文转载自计算机网络概述 基本概念 计算机网络协议:语法,语义,时序 语法:描述实体间信息交换格式 语义:控制信息的具体含义 时序:交换信息的顺序以及速度配合 功能:硬件,软件,信息 分类:覆盖范围,拓扑结构,交换方式,用户属性 树形,星形拓扑:易于管理,中心节点是网络的关键,线路较多成本较高 环形
阅读全文
摘要:本文转载自TCP 的那些事儿(下) 导语 这篇文章是下篇,所以如果你对TCP不熟悉的话,还请你先看看上篇《TCP的那些事儿(上)》 上篇中,我们介绍了TCP的协议头、状态机、数据重传中的东西。但是TCP要解决一个很大的事,那就是要在一个网络根据不同的情况来动态调整自己的发包的速度,小则让自己的连接更
阅读全文
摘要:本文转载自TCP 的那些事儿(上) 导语 TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,我还是推荐你去看W.Richard Stevens的《TCP/IP 详解
阅读全文
摘要:本文转载自SSL (Secure Sockets Layer) TLS简介 The Transport Layer Security (TLS) protocol aims primarily to provide secure and data integrity between two comm
阅读全文
摘要:本文转载自浅谈tcp socket的backlog参数 导语 最近看netty源码碰到ChannelOption.SO_BACKLOG参数,通过跟踪代码发现其实是用于设置底层tcp socket的backlog参数,由于不了解这个参数,有必要彻底的理解一下。 底层 backlog参数主要用于底层方法
阅读全文
摘要:本文转载自深入理解Linux TCP backlog 当应用程序调用listen系统调用让一个socket进入LISTEN状态时,需要指定一个参数:backlog。这个参数经常被描述为,新连接队列的长度限制。 tcp-state-diagram.png 由于TCP建立连接需要进行3次握手,一个新连接
阅读全文
摘要:本文转载自WebSocket 教程 为什么需要 WebSocket? 初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处? 答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起。 举例来说,我们想了解今天的天气,只
阅读全文
摘要:本文转载自HTTP2 的前世今生 #导语 作为一名 Web 后端开发工程师,无论是工作中,还是面试时,对于 HTTP 协议的理解都是必不可少的。而 HTTP2 协议的发布更是解决了 HTTP1.1 协议中一系列的问题。这篇文章是根据我在团队的一次技术分享改编而来,里面介绍了 HTTP/1.0 和 H
阅读全文
摘要:本文转载自HTTP 协议中的并发限制及队首阻塞问题 串行连接 HTTP/0.9 和早期的 HTTP/1.0 协议对 HTTP 请求处理是串行化的。假如一个页面包含 3 个样式文件,同属于一个协议、域名、端口。那么,浏览器一共需要发起四次请求,并且每次只能打开一个 TCP 通道,在一个请求资源完成下载
阅读全文
摘要:本文转载自epoll 原理 导语 以前经常被人问道 select、poll、epoll 的区别,基本都是靠死记硬背的,最近正好复习 linux 相关的内容,就把这一块做个笔记吧,以后也能方便查阅。 epoll 是 linux 2.6 之后新出的一种 I/O 多路复用方式,与传统的 select、po
阅读全文
摘要:本文转载自epoll原理详解及epoll反应堆模型 导语 设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问
阅读全文
摘要:本文转载自IO多路复用之select、poll、epoll 导语 IO多路复用:通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。 应用:适用于针对大量的io请求的情况,对于服务器必须在同时处理来自客户端的大量的io操作的时候,就
阅读全文
摘要:本文转载自Java NIO wakeup实现原理 导语 最近在阅读netty源码时,很好奇Java NIO中Selector的wakeup()方法是如何唤醒selector的,于是决定深扒一下wakeup机制的实现原理,相信对学习NIO是大有裨益的。 wakeup语义 众所周知,selector.s
阅读全文