
网络编程
@云师兄
将技术心得汇聚总结,利人利己
展开
-
TCP/IP分层模型与网络认知
自从参加了工作,对于网络底层协议的透彻了解越来越在工作中占大比例,而以往在关于网络编程上,计算机网络基础也仅仅停留在who是tcp,who是http的层面,真正网络传输的一整套流程和模型没有基础性认知,为此专门花时间将新学习到的计网知识记录于此,以便自己巩固和帮助他人。分组交换/包交换 如今所有的计算机网络都是分组交换了,将计算机之间交换的数据按包package进行拆分,然后再到网络中传输,这种原创 2017-08-27 23:11:05 · 468 阅读 · 0 评论 -
UDP协议新认知
应用场景在传输层上,进程每个操作,都会产生一个udp数据报,这个不同于tcp协议,tcp会对数据进行分段,成为一个个tcp报文段,再传输给网络层,每个tcp报文的可靠性通过tcp层来保证。但是udp并没有提供如此多的可靠性,从其首部8个字节,于tcp首部20个字节相比,就显得功能弱了很多。但是这并不是说udp就比tcp差,有时候应用场景上,还真得用udp,而不适合可靠性强的tcp,比如音视频,数据传原创 2017-10-28 00:02:19 · 337 阅读 · 0 评论 -
TCP三次握手与四次挥手的理解和场景举例
大学时候对于tcp的连接和关闭,都是靠强行记忆下来,发现即不能记得牢,就算记住了,也不是很了解为什么要这么麻烦。TCP全双工通信要明白为什么需要这么麻烦,首先要了解tcp它是全双工通信的,意味着数据端的两方,都有权利向对方发送数据。所以在一条tcp连接上,就需要连接或者关闭两次(两个方向),而每次连接syn或者关闭fin,都需要一个ack返回,才能确定这一方向,真正关闭。三次握手根据tcp连接图的客原创 2017-10-21 23:17:27 · 2065 阅读 · 0 评论 -
TCP窗口协议
什么是窗口win?可能以下这张图更容易理解点。横轴代表的是发送端待发送的数据字节,从图中可以看出有8192个字节要进行传输。而图中最显眼的绿色区域,就代表窗口。窗口分为两部分,左边是发送端已经发送数据包出去,但是未收到接收端返回的ack,右边是可以发送的区域,这样是目前我们数据可以用武之地的地方。窗口是从左到右移动的(也只能这么移动),可以看到窗口左边竖条两边的差异,就是有没有收到ack,所以一旦发原创 2017-10-25 00:00:38 · 634 阅读 · 0 评论 -
http协议笔记
http1.1的特性长连接connection:keep alive块编码:transfer-encoding:123 表示有多少字节将会以块编码模式发送。在http1.0时候,每条连接就是一个connection,发送时候通过content-length便可以知晓回报内容长度。但在http1.1上,每个connction负责多个请求,一些请求在还未完全加载完就要先发送,这时候就要用块编码...原创 2018-07-29 15:32:33 · 166 阅读 · 0 评论 -
java与网络io模型总结
根据《unix网络编程·卷一》所载,目前操作系统的网络io模型分为5中,分别为blocking io :阻塞型io,再熟悉不过,处理accept、read、write都会阻塞用户进程,对应java中的bionon blocking io:简称非阻塞,当通过系统调用的时候,如果没有连接或者数据到达就直接返回一个错误,用户进程不阻塞但是不断的轮询。注意这个不是java nio框架中对应的网络模...原创 2018-07-29 17:34:32 · 343 阅读 · 0 评论 -
https是如何保证安全的?
总所周知,http是明文传输的,也就是你在发往目标服务器的过程中,中间路径下的所有的计算机都能抓取到ip数据包。中间服务器作为路由中转,数据流只会到达网络层,但是因为是明文传输,所以可以看到ip数据包上面携带的http明文。https之所以安全,是因为使用了tls、ssl协议(下文所有安全协议都以tls讲述)。同样是建立在http的基础上的,对于http协议的应用程序开发者,其实是透明的,因为...原创 2018-08-01 00:55:07 · 463 阅读 · 0 评论