网络基础

OSI七层模型

+ 物理层 
+ 数据链路层 
+ 网络层
+ 传输层
+ 会话层
+ 应用层

物理层

将0和1的比特流转换成物理介质。如果没有物理层,由 0 和 1 构成的比特流就无法在物理介质中传播。


数据链路层

它定义了通过通信介质相互连接的设备之前数据传输的规范.数据链路成的意义在意,如果没有数据链路层,数据只能以流的形式存在于通信介质中,不知道数据该发送到哪里。里面有2个重要的概念:

MAC地址

被烧录在网卡ROM中的一串数字,长度为48比特,他在世界范围内是唯一的。一旦指定了MAC地址,就确定了向哪个设备传输数据。

分组交换

分组交互就是将较大的数据分割成若干个较小的数据,然后依次发送。因为不同的数据链路有各自最大的传输单元(MTU),所以需要分割.以太网为例,它的MTU为100个字节,也就是通过以太网传输的数据必须分割为若干个帧,每个帧的大小不超过1500字节.


网络层

网络层的主要作用是实现终端节点间的通信。数据链路层的作用是实现在同一个数据链路下的传递,而网络层则可以实现跨越不同数据链路的包传递.比如主机A通过Wi-Fi连接到路由器B,路由器B通过以太网连接到路由器C,而路由器C又通过Wi-Fi与主机D保持连接。这时主机A向D发送的数据包就依赖于网络层进行传输。

IP协议

IP协议可以分为三大作用模块:IP寻址,路由和IP分包.

IP地址

IP地址是一个在网络层用于识别通信端信息的地址.

DNS解析

IP地址用于识别双方的地址,但他是一长串数字,不好记忆,于是诞生了域名。DNS协议的作用就是将域名转换成IP。

ARP协议

ARP协议用于通过目标IP地址定位到下个接受数据的网络设备的MAC地址ARP 协议的工作原理可以分为两部分:ARP 请求和 ARP 响应。 首先,源主机会通过广播发送一个 ARP 请求包:“我要与 IP 地址为 xxx 的主机通话,谁知道它的 MAC地址?”。

数据链路上的所有主机都会收到这条消息并检查自己的 IP 地址,如果与 ARP 请求包中的 IP 地址一致,主机就会发送 ARP 响应包:“我就是 IP 地址为 xxx 的主机,我的 MAC 地址是:xxxx”。

传输层

传输层的主要作用是实现应用程序间的通信。网络层主要保证了不同数据链路下的数据可达性,至于如果传输数据由传输层负责。常见的传输层协议有TCP协议和UDP协议。TCP协议是面向有链接的协议.也就是说使用TCP协议传输数据之前一定要在发送发和接收方建立连接。一般情况下,建立连接需要3步,关闭连接需要4步。

建立 TCP 连接后,由于有数据重传、流量控制等功能,TCP 协议能够正确处理丢包问题,保证接收方能够收到数据,与此同时还能够有效利用网络带宽。然而 TCP 协议中定义了很多复杂的规范,因此效率不如 UDP 协议,不适合实时的视频和音频传输。

UDP协议是面向无连接的协议。可能会丢失数据.

IP 协议中的两大关键要素是源 IP 地址和目标 IP 地址。而刚刚我们说过,传输层的主要作用是实现应用程序之间的通信。因此传输层的协议中新增了三个要素:源端口号,目标端口号和协议号。通过这五个信息,可以唯一识别一个通信。

不同的端口用于区分同一台主机上不同的应用程序。假设你打开了两个浏览器,浏览器 A 发出的请求不会被浏览器 B 接收,这就是因为 A 和 B 具有不同的端口。

TCP三次握手

Q:为什么是三次握手呢?

因为网络是不可靠的,可能存在延迟或者丢包的可能。三次握手保证了连接的可靠性。举个例子:

假设没有第三次确认,客户端向服务端发送了 SYN,请求建立连接。由于延迟,服务端没有及时收到这个包。于是客户端重新发送一个 SYN 包。回忆一下介绍 TCP 首部时提到的序列号,这两个包的序列号显然是相同的。

假设服务端接收到了第二个 SYN 包,建立了通信,一段时间后通信结束,连接被关闭。这时候最初被发送的 SYN 包刚刚抵达服务端,服务端又会发送一次 ACK 确认。由于两次握手就建立了连接,此时的服务端就会建立一个新的连接,然而客户端觉得自己并没有请求建立连接,所以就不会向服务端发送数据。从而导致服务端建立了一个空的连接,白白浪费资源。


#######三次握手建立连接

这个过程可以用以下三句形象的对话表示:

  1. (客户端)我要建立连接了。
  2. (服务端)我知道你要建立连接了,我这边没有问题。
  3. (客户端)我知道你知道我要建立连接了,接下来我们就正式开始通信。
四次握手关闭连接

这个过程可以用以下四句形象的对话表示:

  1. (客户端)我要关闭连接了。
  2. (服务端)你那边的连接可以关闭了。
  3. (服务端)我这边也要关闭连接了。
  4. (客户端)你那边的连接可以关闭了。
    由于连接是双向的,所以双方都要主动关闭自己这一侧的连接。#

Q:TCP与UDP区别
  • tcp是面向有连接的,它具有丢包重发和流量控制的功能,这是他与UDP最大的区别.udp无连接
  • udp可能会丢失数据
TCP特色之 数据重发

丢包重发的前提是发送方知道了接收方是否成功地接受到了消息。所有,接受端会返回一个确认应答(ACK)的通知,这表示收到了数据包.


发送方如果在一段时间内没有收到 ACK,就会重发数据:



即使网络连接正常,由于延迟的存在,接收方也有可能收到重复的数据包,因此接收方通过 TCP 首部中的 SYN 判断这个数据包是否曾经接收过。如果已经接收过,就会丢弃这个包。

应用层

HTTP协议位于最顶层的应用层里面.使用HTTP协议的时候,客户端会先于服务器的80端口简历一个tcp连接,然后在这个连接的基础上进行请求和应答。



HTTP有两个常用的版本,分别是1.0和1.1。1.0每次请求和应答都会使用一个新的TCP连接,而HTTP1.1在一个连接上进行请求和应答。

POST请求和GET请求

他们的却别:

  • GET请求可以被缓存,可以被收藏为书签,post不行
  • GET请求会保留在浏览器的历史记录中,post不会.
  • GET请求的长度有限制,URL的数据只能是ACSII字符,POST没有限制.
  • GET请求的参数都在URL中,而POST则放在HTTP的请求头里面,安全性高于GET。
Cookie和Session

HTTP 是一种无状态的连接,客户端每次读取 web 页面时,服务器都会认为这是一次新的会话。但有时候我们又需要持久保持某些信息,比如登录时的用户名、密码,用户上一次连接时的信息等。这些信息就由 Cookie 和 Session 保存。

这两者的根本性区别在于,cookie 保存在客户端上,而 session 则保存在服务器中。由此我们还可以拓展出以下结论:

  • cookie 相对来说不安全,浏览器可以分析本地的 cookie 进行 cookie 欺骗。
  • session 可以设置超时时间,超过这个时间后就失效,以免长期占用服务端内存。
  • 单个 cookie 的大小有限制(4 Kb),每个站点的 cookie 数量一般也有限制(20个)。
  • 客户端每次都会把 cookie 发送到服务端,因此服务端可以知道 cookie,但是客户端不知道 session。

当服务器接收到 cookie 后,会根据 cookie 中的 SessionID 来找到这个客户的 session。如果没有,则会生成一个新的 SessionID 发送给客户端。

HTTPS

我们知道 HTTP 协议直接使用了 TCP 协议进行数据传输。由于数据没有加密,都是直接明文传输,所以存在以下三个风险:

窃听风险:第三方节点可以获知通信内容。
篡改风险:第三方节点可以修改通信内容。
冒充风险:第三方节点可以冒充他人身份参与通信。

总结一下 HTTPS 协议是如何避免前文所说的三大风险的:

  • 先用非对称加密传输密码,然后用这个密码对称加密数据,使得第三方无法获得通信内容
  • 发送方将数据的哈希结果写到数据中,接收方解密后对比数据的哈希结果,如果不一致则说明被修改。由于传输数据加密,第三方无法修改哈希结果。
  • 由权威机构颁发证书,再加上证书校验机制,避免第三方伪装参与通信。

现在 HTTPS 协议的握手阶段变成了四步:

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

推荐阅读更多精彩内容