互联网基础知识(你应该知道的互联网知识)
序
现在,我们的手机和电脑,从字面上看,离开 *** 就是一块‘废铁’,作用会大打折扣..本文的作用主要是针对非 *** 专业人士,以‘在最短的时间内了解最多的 *** 计算知识’为前提来写的。
摘要
我们先来了解一下我们知道,但不太了解的各种专业术语的含义。
互联网
因特网
互联网是当今世界更大的 *** ,是“ *** 的 *** ”。也就是说,互联网是一个巨大的 *** ,所有的 *** 都是互联的。
互联网的构成:
边缘:主体
核心:大量的 *** 和连接这些 *** 的路由器(这个路由器不是我们家的路由器)
以太网
以太网是目前最常用的局域网通信协议,MAC帧在以太网上传输。由于以太网只允许一台计算机同时发送数据,所以必须有一套检测机制,那就是C *** A/CD协议:
多点接入:多台计算机以多点接入方式连接在一条总线上。
载波监听:无论是否在发射,每个站都必须不断地检测信道。
冲突检测:发送时监控。
OSI
开放系统互连的基本参考模型,只要遵守这个OSI标准,任何两个系统都可以进行通信。OSI是七层协议架构,而TCP/IP是四层协议架构,所以我们采用折中的方法。学习计算机 *** 原理时,我们经常会用到五层协议架构:物理层、数据链路层、 *** 层、传输层、应用层。
协议体系结构
物理层
计算机世界里只有零和一。就像你在读这篇文章的正文一样,电脑里储存了大量的0和1。但是这些数字不能在真实的物理介质中传输,需要转换成光信号或者电信号,所以这一层负责将这些比特流(0101)转换成光电信号。
如果没有物理层,那么就不会有互联网,也不会有数据共享,因为数据无法在 *** 中流动。
数据链路层
在这一层,数据不再以比特流的形式传输,而是分成帧再传输。
MAC地址
也称为计算机的硬件地址,是固定在适配器(网卡)ROM上的48位地址。MAC地址可以用来唯一区分一台计算机,因为它是世界上唯一的。
分组交换
由于这次要把数据一帧一帧的分割,由于不同链路规定了不同的更大帧长,也就是MTU(更大传输单位),所以超过这个MTU的帧都要分块。比如一辆卡车一次可以运5吨货物,而一条公路的容量是2吨,你要分三次运。
桥
网桥工作在数据链路层,根据MAC帧的目的地址转发和过滤接收到的帧。
以太网交换机
实际上,它是一个多接口网桥。以太网交换机的每个接口都直接连接到单个主机或另一个集线器,这可以很容易地实现VLAN(虚拟局域网)。
以太网的MAC帧
MAC帧的格式是:
MAC帧格式
地址:接收方的48位MAC地址。
源地址:发送方的48位MAC地址
Type字段:表示上层使用什么协议,0×0800为IP数据报。
网路层
如果只有数据链路层没有 *** 层,数据只能在同一链路上传输,不能跨链路传输。有了 *** 层,数据可以在不同的域中通过不同的数据链路传输。
IP地址
IP地址,也称为软件地址,存储在计算机的内存中。IPv4地址是32位,IPv6地址是128位。
IP地址和MAC地址
IP地址用于 *** 层之上,MAC地址用于数据链路层之下。
IP地址是逻辑地址,MAC地址是物理地址。
IP包中报头的源地址和目的地址在传输过程中不会改变,MAC帧中报头的源地址和目的地址在每个路由器都会改变一次。
IP地址分类
IP地址= {,}
甲类地址:0.0.0 ~ 127.0.0.0乙类地址:128.0.0.0 ~ 191.255.0.0C丙类地址:192.0.0 ~ 223.255.255.0。
划分子网后的IP地址
IP地址= {,,}
例如,某公司有一个B类IP地址145.13.0.0,但任何目的地址为145.13.x.x的数据报都会被发送到该 *** 上的路由器R。内部子网划分后,会变成:145.13.3.0,145.13.7.0,145.13.21.0。
子网掩码
一般由一串1和0组成。无论 *** 是否被划分子网, *** 地址都可以通过子网掩码和IP地址的按位AND运算得到。
所有 *** 都必须使用子网掩码,并且路由表中必须有子网掩码。如果 *** 没有划分子网,则该 *** 的子网掩码是默认子网掩码。
A类地址的默认子网掩码是255.0.0.0B,B类地址的默认子网掩码是255.255.0.0C,C类地址的默认子网掩码是255.255.255.0
虽然子网划分增加了灵活性,但它减少了可以连接到 *** 的主机总数。
构成超网的IP地址
IP地址= {,}
具有 *** 前缀和未分类域间路由的CIDR
例如,128.14.35.7/20,表示前20位是 *** 前缀,后12位是主机号。此外,CIDR会形成一个由具有相同 *** 前缀的连续IP地址组成的“CIDR地址块”。
地址掩码:CIDR使用32位地址掩码,类似于子网掩码。
IP数据报
在 *** 层,数据以IP数据报(IP数据包)的形式传输。
IP数据报的格式
前20个字节的长度是固定的,这是所有IP数据报所必需的。最后4个字节是可变长度的可选字段。
IP数据报报头中固定字段的分析:
版本:IP协议的版本,IPv4或IPv6。
表头长度:记录表头的长度,更大为1111,即15个32位字,即60字节。当报头长度不是4字节的整数倍时,需要用最后一个填充字段填充。
服务类型:一般没用。
总长度:指报头和数据之和的长度。更大长度为216-1 = 65535字节。但由于数据链路层规定每帧的数据长度有更大长度MTU,以太网规定MTU为1500字节,超出范围的数据报必须分片。
标识:每生成一个IP数据报,计数器就+1,这个值就赋给标识字段。在将来需要分段的数据报中,相同的标识意味着相同的数据报。
标志:3位数字,更低位数是MF(更多片段)。MF = 1表示仍有碎片;MF = 0表示这是最后一个片段。中间位标记为DF(不分段),表示不允许分段。仅当DF = 0时才允许分段。
段移位:也称为切片移位,指的是切片相对于用户数据字段起始点的起始位置。切片移位以8字节为偏移单位。因此,每个片的长度必须是8字节的整数倍。
生存时间:TTL(生存时间)。在互联网中,数据报通过路由器的更大次数是255次,每个路由器使用TTL–1。当它为0时,数据报被丢弃。
协议:记录消息携带的数据所使用的协议。
报头校验和:只检查数据报的报头,不检查数据部分。如果不为0,则丢弃该数据报。
源地址和目的地址:没有解释
IP层数据包转发过程
每台路由器都维护一个路由表,其中包含以下内容(目的 *** 地址、下一跳地址)。
使用子网转发数据包时,路由表必须包含以下三项:目的 *** 地址、子网掩码和下一跳地址。
特定于主机的路由:表示到特定目的地址的路由。
默认路由:当您不知道要将数据包发送到哪个路由器时,将数据包发送到默认路由。当 *** 的外部连接很少时,使用默认路由非常合适。
路由器的数据包转发算法
从数据报中得到目的IP地址D,得到目的 *** 地址n。
如果n是直接连接到此路由器的 *** 地址,则直接投递(不需要转发到其他路由器,找到目的主机后投递即可),否则-->(3)
如果路由表中有目的地址为D的特定主机路由,则将数据报发送到路由器,否则-->(4)
如果路由表中有到 *** N的路由,则将数据报发送到路由器,否则-> (5)
如果路由表中有默认路由,则将它提供给路由器,否则-->(6)
转发报告数据包时出错
虚拟专用 *** VPN
互联网上的所有路由器都不会转发目的地址为私有地址的数据报。下面有三个私有地址(虚拟IP地址)。
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
现在假设A公司一个部门在广州,一个部门在上海,都有自己的专网。那么如何连接这两个私有 *** 呢?
租用的电信线路是我们组织专用的,但是太贵了。
利用公共互联网作为通信载体,这就是虚拟专用网VPN。
*** 地址转换NAT
多个私有 *** 中的主机共享一个NAT路由器的IP地址。当主机发送和接收IP数据报时,它必须首先通过NAT路由器转换 *** 地址。
NAT路由器的工作原理
不仅如此,NAT还可以使用端口号,并成为 *** 地址和端口转换的NAPT。
ARP协议
ARP是解决同一局域网内主机或路由器的IP地址和MAC地址的映射问题,即IP地址-> ARP -> MAC地址。
每台主机都有一个ARP缓存,其中包含本地LAN中主机和路由器的IP地址到MAC地址的映射表。ARP是这样工作的:
ARP是如何工作的。使用jpeg文件交换格式存储的编码图像文件扩展名
如果在整个 *** 中使用ARP会怎样?
在此 *** 上广播
如果找不到主机,请转到路由器。
路由器帮助转发(在另一个 *** 上广播)
如果找到,则ARP请求完成;如果没有找到,则返回(2)
传输层
这一层是最重要的,因为数据链路层和 *** 层中的数据传输是不可靠的,并且是尽更大能力传送的。那是什么意思?也就是说,他们不负责提交给你的是正确的数据。然而,这一层的TCP协议将提供可靠的传输。
这一层主要关注两种协议:UDP和TCP。
用户数据报协议UDP
UDP的主要功能:
无连接传输模式
尽更大努力去交付。
面向消息:应用层传下来的消息直接加上UDP头,扔在IP层,不需要合并或拆分。
无拥塞控制
支持一对一、一对多、多对一、多对多的互动交流。
头开销很小,只有8个字节。
UDP报头
UDP报头格式
源端口:源端口号。需要对方回复时选择,不需要时使用全零。
端口:目的端口号。在最后传递信息时,必须使用这一点。
长度:UDP数据报的长度,最小值为8(仅报头)
并且:与只检查报头的IP数据报不同,UDP需要一起检查报头和数据部分。
传输控制协议TCP
TCP的主要功能:
面向连接的传输层协议
每个TCP连接只能有两个端点,TCP是点对点的。
提供可靠的交付
全双工
面向字节流
TCP的工作流程
TCP字节流
TCP连接
TCP连接的端点称为套接字。
套接字= (IP地址:端口号)
每个TCP连接都是由通信两端的两个端点(套接字)唯一确定的,即:TCP连接::= {Socket1,Socket2} = {(IP1: port1),(IP2: port2)}
TCP数据段的报头
TCP数据段的报头
源端口和目的端口:与UDP端口相同。
Sequence number:这个部分中数据的之一个字节的序列号。
确认号:预计接收到的对方下一个报文段中之一个数据字节的序列号。如果确认没有。= N,表示序列号N-1之前的所有数据都已正常接收。
offset:TCP数据段的报头长度
保留:供将来使用,当前为0。
URG:如果URG = 1,表示紧急指针字段有效,告诉系统是紧急数据,应该尽快传输。例如,传输应该突然中断。
ACK:确认号仅在ack = 1时有效,但在ACK = 0时无效。TCP规定,连接建立后,所有传输的消息段必须将ack设置为1
推PSH:如果PSH = 1,接收方在接收到该段后不会等到整个缓冲区满了,而是直接向上传递。
复位:当RST = 1时,表示TCP连接存在严重错误,必须释放连接并重新连接。
SYN:用于在连接建立时同步序列号。当SYN = 1,ACK = 0时,表示这是一个连接请求段。如果对方同意建立连接,将SYN = 1,ACK = 1放入响应段。
Terminate FIN:当FIN = 1时,表示该段发送方数据已经发送,要求释放连接。
Window:告诉对方接收方允许对方从本段表头的确认号发送多少数据。这是接收方要求发送方设置其发送窗口的基础。
和:和UDP一样,检查报头和数据部分。
紧急指针:URG = 1时有效,指示报文段中紧急数据结束的位置。
选项:更大长度可以是40个字节;否则,将为0。更大段大小MSS(Maximum Segment Size):每个TCP段中数据字段的更大长度;如果留空,则默认为536字节。
窗口
TCP中一个很重要的概念就是窗口(发送窗口和接收窗口)。
窗户
由于停止等待协议是非常低效的,窗口的概念被导出。上图是发送方维护的发送窗口。发送窗口的五个包都可以连续发出去,不需要等待对方确认。每次收到确认时,发送窗口向前移动一个数据包。这大大提高了渠道利用率!
接收方不必发送每个数据包的确认消息,而是使用累积确认。也就是说,它向按顺序到达的最后一个数据包发送确认消息。
超时重新传输
如果发送方在等待一段时间后仍未收到ACK消息,将启动超时重传。这个等待时间就是RTO,即重传超时(RTO)。
但是,RTO的值不是固定的,这个时间总是略长于连接往返时间(RTT,往返时间)。假设发送一条消息需要5秒,对方收到消息后发回确认消息需要5秒,那么RTT就是10秒,这个RTO会略大于10秒。然后,如果在RTO之后没有接收到确认消息,则该消息将被视为丢失,并将被重新发送。
流量控制
采用滑动窗口和消息段发送定时进行流量控制。
拥塞控制
发送方维护一个拥塞窗口cwnd,发送窗口=拥塞窗口。
慢启动:cwnd = 1,然后每传输一轮加倍。拥塞避免:让cwnd缓慢增加,并且+1慢启动阈值ssthresh每个传输循环:
当cwndssthresh,使用拥塞避免算法当cwnd=ssthresh,随意拥塞控制
只要判断 *** 拥塞,就将ssthresh设置为当前传输拥塞窗口的一半(不小于2),将cwnd设置为1,重新执行慢启动算法。
除了慢启动和拥塞避免算法之外,还有一组快速重传和快速恢复算法:
快速重传:接收方及时发送确认,而发送方只要连续收到三次重复确认,就会立即重传确认。快速恢复:当发送方连续收到三个重复的确认时,ssthresh减半,cwnd设置为ssthresh。
TCP三次握手
三次握手中的TCP连接和四波断开是面试的知识点。
TCP三次握手
问:为什么要三次握手?不能是两次吗?
答:假设A之一次发送连接请求,但是停留在 *** 中的一个节点,A超时后重新发送。然后这一次一切正常,A和B愉快地传输数据。当连接释放后,丢失的连接请求突然到达B,如果是两次握手,B发送确认,两次连接。其实A并不在意这个确认,因为我根本不想传输数据。
更接地气的解释是:A打 *** 给b。
之一次握手:你好,我是A,你能听到我说话吗第二次握手:听到了,我是B,你能听到我说话吗第三次握手:听到了,我们可以开始聊天了三次握手其实就是为了检测双方的发送和接收能力是否正常,你说呢?TCP波动四次
TCP挥了四下。
问:为什么挥手四次而不是两三次?
答:首先,由于TCP的全双工通信,双方都可以作为数据发送方。A想要关闭连接,必须等到所有的数据都发送完之后才能向B发送FIN,(此时A处于半关闭状态)然后,B发送一个确认ack,B发送数据(比如做一些预释放处理)如果想要发送的话。再者,B发送完数据后,发送FIN给A,(此时A,B处于半封闭状态)然后,A发送ACK,进入TIME-WAIT状态。最后,如果在2MSL之后没有接收到来自B的消息,则确定B已经接收到ACK。(此时,A和B处于完全关闭状态。)
PS:仔细分析以上步骤,你就能明白为什么至少四次都挥不动了。
问:为什么在从TIME_WAIT进入CLOSED之前必须等待2MSL(更大段生存期)?
答:最后一个ACK回复是在客户端发送的,但是ACK可能会丢失。如果服务器没有收到ACK,它将重复发送FIN片段。因此,客户端不能立即关闭,它必须确认服务器已经收到ACK。发送ACK后,客户端将进入TIME_WAIT状态。客户端将设置一个定时器并等待2MSL。如果在此时间内再次收到FIN,客户端将重新发送ACK并再次等待2MSL。MSL是指一个片段在 *** 中的更大存活时间,2MSL是一次传输和一次回复所需的更大时间。如果客户端直到2MSL才再次接收到FIN,则客户端推断ACK已经被成功接收,并结束TCP连接。
一个更有根据的解释:
之一次挥手:A告诉B,我没数据发了,准备关闭连接了,你要发送数据吗第二次挥手:B发送最后的数据第三次挥手:B告诉A,我也要关闭连接了第四次挥手:A告诉B你可以关闭了,我这边也关闭了应用层
应用层中最著名的协议是HTTP、FTP和一个重要的DNS。
域名系统(DNS)
DNS可以将域名(例如,www.jianshu)解析为IP地址。
域名服务器分类
根域名服务器:更高级别的域名服务器。
顶级域名服务器:顾名思义
域名服务器:负责一个区域的应用服务器。
本地域名服务器:主机向其发送DNS查询请求。
DNS查询
DNS查询
从主机到本地域名服务器的查询通常是递归的。
本地域名服务器到根域名服务器的查询通常采用迭代查询递归:B问A怎么去广州,A不知道,A问C,C问D不知道...直到他知道,然后告诉A告诉B .迭代查询:B问A怎么去广州,A不知道,A叫你问C,然后B问C,C不知道,C叫你问D,然后
DNS查询示例:域名为x.tom的主机想知道y.jerry的IP地址。
X.tom首先对本地域名服务器dns.tom进行递归查询。
本地域名服务器使用迭代查询。它首先询问根域名服务器
根域名服务器告诉它,问顶级域名服务器dns。
本地域名服务器向顶级域名服务器dns查询。
顶级域名服务器告诉它,你去问权威域名服务器dns.jerry。
本地域名服务器请求许可域名服务器dns.jerry
域名服务器dns.jerry告诉它被查询主机的IP地址。
本地域名服务器告诉主机x.tomPS查询结果:查询使用UDP,为了提高DNS查询的效率,每个域名服务器都使用cache。
URL
URL的格式:://:/,有时可以省略端口和路径。
使用http协议的URL:HTTP://:/,HTTP的默认端口号为80。
HTTP协议
HTTP是面向事务的,即它传输的数据是一个整体,要么全部收到,要么一个都没收到。
万维网的工作过程
每个HTTP请求都需要建立一个TCP连接,并释放TCP连接。
HTTP是无连接和无状态的。每个请求都是一个新的请求。
HTTP/1.0的缺点:没有连接,每个请求都要重新建立TCP连接,所以每个HTTP请求需要2倍RTT时间(一个TCP请求,一个HTTP请求)。
HTTP/1.1:使用持久连接,即在一段时间内保持TCP连接。
HTTP/1.1持续工作的两种工作方式:非流水线方式和流水线方式非流水线方式:收到一个请求的响应再发下一个请求,效率低,浪费资源流水线方式:能够同时发送多个请求,效率高获取并发布HTTP
GET请求通常用于查询和获取数据,而POST请求用于发送数据。GET请求的参数在URL中,所以敏感数据绝不能和GET请求一起传输,而POST请求的参数在请求头中,比GET请求稍微安全一些。
ps:POST请求的数据也是以明文的形式存放在请求头中,因此也不安全Cookie
万维网Cookie用于跟踪用户,指示HTTP服务器和用户之间传输的状态信息。
Cookie工作原理:
1.用户浏览某网站,该网站的服务器为用户产生一个唯一的识别码,并以此为索引在服务器后端数据库中产生一个项目2.返回给用户的HTTP响应报文中添加一条"Set-cookie",值为该识别码,如1233.用户的浏览器将该cookie保存起来,在用于继续浏览该网站时发送的每一个HTTP请求都会有一行Cookie:123于是,这个网站就知道Cookie为123的这个用户做了什么,为这个用户维护一个独立的列表(如购物车)当然,cookies是一把双刃剑,既方便又危险,比如隐私泄露。用户可以决定是否使用cookies。
会话
Cookies存储在客户机中,而会话存储在服务器中。当服务器收到用户的Cookie时,它会根据Cookie中的SessionID找到相应的会话。如果没有,它将生成一个新的SessionID并将其返回给用户
总之,Cookie和Session只是存储同一事物的不同地方。
[/s2/]HTTPS
HTTPS议定书
HTTPS协议在HTTP协议的基础上,在HTTP和TCP之间增加了一层SSL/TLS加密层,解决了HTTP的三大不安全问题:冒充、篡改和窃听。
本文地址:百科生活频道 https://www.neebe.cn/live/932204.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!