计算机网络
杨博东的博客
阿里云数据库-NoSQL组,开源贡献者,Valkey Contributor,Valkey-Java Client Maintainer。
展开
-
TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复
我们在开始假定: 1:数据是单方向传递,另一个窗口只发送确认. 2:接收方的缓存足够大,因此发送方的大小的大小由网络的拥塞程度来决定.一:慢开始算法和拥塞避免算法 发送方会维持一个拥塞窗口,刚开始的拥塞窗口和发送窗口相等,一般开始均设置1,然后我们每收到一个确认,就让拥塞窗口大小变为原来的两倍,接着发送分组也是原来的两倍,以此类推,当窗口值等于16(慢开始门限),然后我们开始采用”加原创 2015-09-16 20:14:51 · 17138 阅读 · 4 评论 -
计算机网络漫谈之OSI七层模型和TCP/IP四层模型
在 什么是网络? 中,你已经知道计算机网络是物理连接的“局域网”和工作于这个局域网上的“网络协议”,并且我们的重心是网络协议。有关网络协议,按照目前的分层方式主要有两种,一种是OSI七层模型(忽略它,没什么卵用 :)),一种是TCP/IP四层模型。下面我们主要来看看它们的对应关系和工作在不同层的具体协议。 OSI TCP/IP 常见网络协议 应用层(Application)原创 2017-05-18 09:24:49 · 1923 阅读 · 2 评论 -
计算机网络漫谈之IP数据包
网络层从 网络层 、IP与子网掩码 前前后后我们也说了两次了,IP 这个东西絮絮叨叨的也一直在提。今天我们来解开IP协议的面纱,还记得我们之前在数据链路层说的物理帧的结构吗?就是这样:其中Head叫标头,包含源和目的MAC地址,那时我们还没有IP的概念,但是我们用广播的方式也已经能实现全世界范围的通信,但之后我们否定了这种方式,因为会造成网络拥堵,浪费资源。因此就有了子网络,自此,MAC地址和原创 2017-05-18 13:21:56 · 1844 阅读 · 1 评论 -
计算机网络漫谈之IP与子网掩码
通过之前的介绍,我们现在已有的概念是任何一台计算机如果需要接入互联网,都会分配到一个IP地址。这个地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。因此,处于同一个子网络的电脑,它们IP地址的网络部分必定是相同的,也就是说172.16.254.原创 2017-05-18 13:04:25 · 1024 阅读 · 0 评论 -
计算机网络漫谈之网络层
在 数据链路层 中,我们Get了数据包的定义(帧=标头+数据)、网卡的MAC地址、广播发送方式三个重要概念。并且我们知道在技术上,依靠MAC地址和广播的发送的方式,我们其实可以实现全世界范围内的计算机互相通信(比如西安和芝加哥)。留给你的问题是:广播的方式到底合适吗?回答:不能适用一般数据包的发送,会给网络造成很大的压力,是资源的浪费。就是这样,世界上这么多计算机,两两通信如果所有人都会收到,网络上原创 2017-05-18 11:42:15 · 673 阅读 · 0 评论 -
计算机网络漫谈之什么是网络
我提出一个问题:你的微信消息怎样发送给你的好友?或许你现在什么也不知道?或许你现在已经可以告诉我:消息是先到腾讯的微信服务器的,然后腾讯再遍历我的好友列表,找到好友,把消息发送给他。回答正确!但是也很明显,这个过程中你和好友的手机都是和腾讯服务器相连的。所以什么是网络呢?就是用物理设备将各个“局域网”相连组成的更大的“局域网”。小的局域网可以是家里的WiFi,或者陕西省的网络你也可以看作是一个局域原创 2017-05-18 08:54:28 · 1402 阅读 · 0 评论 -
计算机网络漫谈之数据链路层
让我们从整个协议最底层开始,先来看看数据链路层主要都做了哪些事:首先上面两台电脑需要通信,先将它们物理连接起来,然后就可以传送高低电位了,高电位表示1,低电位表示0。但是单纯的0和1没有任何的意义,我们必须人为的规定解读方式,比如:多少个0和1作为一组信号?每个信号位有什么含义?…… 还记得不?我们前面说过互联网早期的时候好多公司都有自己的网络协议。但是最后逐渐被“以太网”占据了主导地位,以太网规原创 2017-05-18 11:23:54 · 1130 阅读 · 0 评论 -
计算机网络漫谈之传输层
之前我们通过学习 数据链路层 和 网络层 知道了一个计算机有两个地址:MAC地址和IP地址,有了MAC地址和IP地址,我们已经可以在互联网上任意两台主机上建立通信。 现在面临的问题是,同一台主机上有许多程序都需要用到网络。比如,你一边浏览网页,一边与我QQ聊天。当一个数据包从互联网上发到你电脑的时候,它怎么知道,这是表示网页的内容,还是表示聊天的内容? 也就是说,我们还需要一个参数,表示这个数据原创 2017-05-22 23:55:42 · 694 阅读 · 0 评论 -
计算机网络漫谈之应用层
有关网络我们讨论到今天,整个网络框架我们已经搭建起来了。我们说了数据链路层、网络层、传输层,其实应用层就是在我们之前讨论的基础上使用下面这些层,我打算举例HTTP协议,也是应用层非常重要的协议,”应用层”的作用,就是规定应用程序的数据格式。比如HTTP协议的数据包基本如下所示:HTTP协议的职责就是把数据组织成这个样子,然后把自己填入TCP数据包的”数据”部分。因此,现在的以太网的数据包就变成下面这原创 2017-05-23 00:16:34 · 741 阅读 · 0 评论 -
计算机网络漫谈之UDP和TCP
计算机网络漫谈之传输层 咱们讨论了如果需要确定一个计算机上的不同网络程序(比如QQ和浏览器),需要端口的标识,但是IP头部和帧的头部都没有端口的标识字段,需要新的协议。和前面IP协议的实现套路一样,我们需要一个空间来存放端口号,因此就有了传输层的协议TCP和UDP。最简单的实现就是UDP协议,它的格式几乎就是在数据前面,加上端口号。UDP数据包,也是由”标头”和”数据”两部分组成。“标头”部分主要原创 2017-05-23 00:08:56 · 1561 阅读 · 0 评论 -
TCP vs UDP
本文翻译自 : http://www.diffen.com/difference/TCP_vs_UDP这个网站叫diffen:在它上面,你可以比较两个东西的异同。 比较项 TCP UDP 全称 Transmission Control Protocol(传输控制协议) User Datagram Protocol(用户数据报协议) 连接 面向连接 无连接 功能原创 2017-03-23 02:10:23 · 679 阅读 · 0 评论 -
Socket `accept queue is full ` 但是一个连接需要从SYN->ACCEPT
由于标题长度有限制,我把想要描述的问题再次描述下:内核通常会为每一个LISTEN状态的Socket维护两个队列:1 accept队列: listen()函数第二个参数BACKLOG指定,表示已完成连接的队列,等待被accept函数取走。 2 SYN队列:由/proc/sys/net/ipv4/tcp_max_syn_backlog指定,表示处于SYN_RECV状态的队列。如果没有概念,参考:原创 2017-03-05 23:31:16 · 3821 阅读 · 9 评论 -
[转]技术往事:改变世界的TCP/IP协议
原文链接 : http://www.52im.net/thread-520-1-1.html1、前言作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难说的清楚。本文将简要回故TCP/IP协议的过去、简单介绍TCP/IP协议族的关系,并与大家一起直观地分享由T转载 2017-01-04 09:58:50 · 804 阅读 · 0 评论 -
IP数据报中如果不分片,分片标志值是什么?
过了好久才解决这个简单的问题,罪过罪过……答案:如果IP数据报不分片,分片标志DF(Don’t Fragment)会被设置为1。分片标志MF(More Fragment)设置为0。下面是详细解释:1:首先来一张IP数据报的报文头部结构。 2:需要注意第二行数据,有这么三个字段序列号:开始发送数据时由发送方生成。标识发送方发送的每一个数据报,如果发送的数据报未发生分片,则此值依次加1,如果发生了分原创 2016-11-09 20:56:41 · 24274 阅读 · 7 评论 -
“TCP:三次握手”分析——以一个简单的“服务器”和“客户端”为例
linux&C这两天学到了网络编程这一章,自己写了一个小的”服务器”和”客户端”程序,目的在于简单理解tcp/ip模型,以及要搭建一台简单服务器,服务器和客户端最基本的事情要干什么,这篇博客就这个小程序,也简单分析了自己对”TCP-三次握手”过程的理解。因为初学网络编程,说的不对的地方欢迎大家评论交流。 套接字: 套接字由4部分组成,服务器IP地址和客户端IP地址以及服务器端口号和客户端端原创 2015-08-08 18:59:35 · 5310 阅读 · 10 评论 -
TCP协议总结--停止等待协议,连续ARQ协议,滑动窗口协议
前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 先来看看我的问题: 这是用tcpdump命令抓的三次握手的包,可以看到seq和ack都比较大,我自己也无法解释原因. 第二张是在同一过程中用Wireshark抓的包,其中seq和ack还比较正常,难道原原创 2015-09-16 16:27:21 · 12405 阅读 · 0 评论 -
TCP报文段首部详解
TCP虽然是面向字节流的,但是tcp传送的数据单元却是报文段,一个报文段分为首部和数据两部分,几乎TCP所有功能都从首部来体现,下面我们来详细的剖析下它的首部. (1):源端口与目标端口:分别写入源端口号和目标端口号. (2):32位序列号:也就是我们tcp三次握手中的seq,表示的是我们tcp数据段发送的第一个字节的序号,范围[0,2^32 - 1],例如,我们的seq = 201,携带的原创 2015-09-16 16:57:31 · 5651 阅读 · 0 评论 -
计算机网络漫谈
前言:本文作于2017年1月~3月之间,借助大三寒假的时间,我把自己学习的网络相关的知识做了个简单的整理,由于个人能力有限,我参考了 阮一峰 互联网协议入门,并且在我文中出现的一些插图也是来自他的原文,通过这些文章,我希望能让读者建立起计算机网络的基本概念,但是文章中也有许多语焉不详的地方,如果搞懂,我会不断更新。我希望你读这些文章就像读故事一样,这样你会很容易理解网络中的一些诸如为什么计算机需要原创 2017-05-18 08:39:46 · 2979 阅读 · 4 评论