阮一峰关于网络的学习笔记

互联网由一整套协议构成,TCP只是其中的一层,TCP是以太网协议和IP协议的上层协议,也是应用层协议的下层协议;

最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet), 解决了子网内部的点对点通信,但以太网协议不能解决多个局域网如何互通,这有IP协议解决;

IP协议定义了一套自己的地址规则,成为IP地址,它实现了路由功能,允许某个局域网的A主机向另一个局域网的B主机发送消息,路由器是基于IP协议,局域网之间要靠路由器连接;

IP协议只是一个地址协议,并不保证数据包的完整,如果路由器丢包(比如缓存满了,新进来的数据包就会丢失),就需要发现丢了哪一个包,以及如何重新发送这个包,这就要依靠TCP协议

简单的说,TCP协议的作用是,保证数据通信的完整性和可靠性,防止丢包;

以太数据包的大小是固定的,最初是1518字节,后来增加到1522字节,其中1500字节是负载(payload), 22字节是头信息(head)

IP数据包在以太网数据包的负载里,它也有自己的头信息,最少需要20字节,所以IP数据包的负载最多为1480字节。

IP数据包在以太网数据包里面,TCP数据包在IP数据包里面,它的头信息最少也需要20字节,所以TCP数据包的最大负载时1460字节。由于IP和TCP协议往往有额外的头信息,所以TCP负载实际为1400字节左右。

一条1500字节的信息需要两个TCP数据包。HTTP/2协议的一大改进是压缩HTTP协议头信息,使得一个HTTP请求可以放在一个TCP数据包里,而不是分成多个,这样就提高了速度。

数据发送的时候,TCP协议为每个包编号,简称SEQ,以便接收的一方按照顺序还原,万一放生丢包,页可以知道丢失的是哪一包

收到TCP数据包以后,组装还原是操作系统完成的。应用程序不会直接处理TCP数据包。对应用程序来说,不用关心数据通信的细节。除非线路异常,收到的总是完整的数据。应用程序需要的数据放在TCP数据包里面,有自己的格式(比如HTTP协议)

TCP并没有提供任何机制,表示原始文件大小,这由应用层的协议来规定。比如,HTTP协议就有一个头信息content-Length,表示信息体的大小。对于操作系统来说,就是持续地接收TCP数据包,将他们按顺序组装好,一个包都不少。

操作系统不会去处理TCP数据包里面的数据,一旦组装好TCP数据包,就把它们转给应用程序。TCP数据包里面有一个接口(port)参数,就是用来指定转交给监听改端口的应用程序。

应用程序收到组装好的原始数据,以浏览器为例,会根据HTTP协议的content-Length 字段正确独处一段段的数据, 这也意味着,

服务器发送数据包,当然越快越好,最好一次性全发出去。但是,发得太快,就有可能丢包。带宽小、路由器过热、缓存溢出等许多因素都会导致丢包。线路不好的话,发得越快,丢得越多。

默认情况下,接收方没收到两个TCP数据包,就要发送一个确认信息,确认的英语是acknowledgement,简称ACK

ACK携带两个信息:期待要收到的下一个数据包的编号;接收方的接收窗口的剩余容量

由于TCP通信是双向的,所以双方都需要发送ACK。两方的窗口大小,很可能是不一样的。

每一个数据包都带有下一个数据包的编号,如果下一个数据包没有收到,nameACK的标号不会发生变化。

互联网的五层:应用层、传输层、网络层、链接层、实体层

实体层:它就是吧电脑连接起来的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

链接层:它在实体层的上方,确定了0和1的分组方式。以太网规定,一组电信号构成一个数据包,叫做“帧”(Frame),每一帧分成两个部分:标头(Head)和数据(Data),标头包含数据包的一些说明项,数据则是数据包的具体内容。标头的长度,固定为18字节,数据的长度,最短46字节,最长1500字节。因此,整帧最短为64字节,最长为1518字节,如果数据很长,就必须分割成多个帧进行发送

以太网数据包必须知道接收方的MAC地址,然后才能发送。发送是以广播的形式传送数据(发送给本网络的所有计算机,由接收方自己判断是否接收该数据)

网络层:IP协议,为每一台计算机分配IP地址,确定哪些地址在同一个子网络,IP地址和子网掩码进行二进制的AND运算(同为1,则为1,否则为0),然后比较结果是否相同,如果是,就表明它们在同一个子网络中,否则就不是

如果两台主机不在同一个子网络,那么事实上没有办法得到对方的MAC地址,只能把数据包传送到两个子网络连接处的网关(gateway),让网关处理。

通过ARP协议,我们可以得到同一个子网络内的主机MAC地址,可以把数据包发送到任意一台主机之上了。

传输层:建立“端口到端口”的通信,网络层的功能是建立“主机到主机”的通信,只要确定主机和端口,我们就能实现程序之间的交流。在数据包中加入端口信息,需要UDP协议,整个UDP数据包放入IP数据包的“数据部分”,UDP数据包标头一共8个字节,总长度不超过65535字节,正好放进一个IP数据包

0到1203的端口被系统占用,用户只能选用大于1023的端口。

TCP数据包和UDP数据包一样,都是内嵌在IP数据包的数据部分

应用层:规定应用程序的数据格式,这是最高一层,直接面对客户,它的数据就放在TCP数据包的“数据”部分;

网络通信就是交换数据包

DNS协议:发送数据包,必须要知道对方的IP地址。DNS协议可以将网址转换成IP地址。

输入www.google.com, 

向DNS服务器发送一个DNS数据包(53端口) =>DNS服务器相应返回Google的IP地址172.194.72.105 =>判断IP是不是在同一个子网络,(否)=>因此,我们要向google发送数据包,必须通过网关192.168.1.1转发,接收方的MAC地址将是网关的MAC地址 =>TCP的header中设置端口信息 => IP 的header中设双方的IP地址=>IP数据包嵌入以太网数据包,以太网数据包需要设置双方的MAC地址(通过ARP协议得到google的MAC地址)=>经过多个网关转发,google服务器收到多个以太网数据包,根据IP头的序号,google将多个包拼起来,取出完整的TCP数据包,然后读取里面的“HTTP”请求=>响应“HTTP请求”,再用TCP协议发回来=>本机收到HTTP响应,将网页展示出来,完成一次网络通信

数据大于以太网数据包的最大容量,IP数据包必须分割成多个包,每个包都有自己的IP头


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,933评论 1 13
  • title: 网络基础学习总结(1) tags: 网络 categories:笔记 date: 2017-06-1...
    行径行阅读 2,483评论 0 3
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,028评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,042评论 0 8
  • 最近健身完在回家的路上到处都能看到烧烤摊子,串串摊子,摇色子划拳的声音此起披伏,好不热闹。一般情况下我回家是有三条...
    眼睛睁_闫老湿阅读 354评论 5 1