计算机网络基础

OSI七层模型(应表会传物链网)

应用层 协议

  • 各种应用协议(HTTP,FTP,DNS,SMTP等等),规定各种应用程序数据传输格式。

表示层 翻译

  • 不同操作系统之间进行翻译(语法,语义,加解密,压缩,解压缩等等)

会话层 进程之间

  • 进程之间会话管理,同步
  • 断点续传,自动收发包,自动寻址的功能。

传输层(用错流可靠)端口 用户数据报 进程之间

  • 发送数据分装交给网络层—通过TCP或者UDP协议(进程和进程之间的通讯)
  • 端对端的进行可靠的传输服务(port-port)

网络层(拥错流路由)路由器 数据报、ip分组 主机之间

  • 怎么知道对方的mac地址?—使用ARP(address resolution protocol)协议,通过ip地址知道对方的mac地址
  • 怎么判断是否在一个子网(ip地址网络段相同,主机号不同)?—使用ip协议
  • 怎么选择最优的路径?—通过一些路由协议

数据链路层 (传错流成帧)网桥、网卡、交换机 帧

  • 对比特流进行处理,分组之后成数据帧。
  • 会带上原mac地址和目标mac地址。

物理层 (一传两定)中继器、集线器、光猫 比特流

  • 互联物理链路,物理介质,例如网线(双绞线)、光纤、无线电波。 以比特

  • 流的方式传输,也就是电信号或者二进制(010101)传输。

  • 光猫 :光纤的调制解调器,在电信和光信号之间调制和解调。现在都是光纤入户了。

我们要跟目标主机通信,就必须知道目标主机的ip和mac地址。

如果源主机与目标主机不属于同一子网,那么目标mac地址为默认网关的mac地址。随后数据被发送到默认网关,发送的方式参考上面同一子网内主机的通信(因为默认网关与源主机必定是在同一个子网中的)。默认网关收到后,将目标mac地址设置为下一跳的路由器的mac地址(找不到下一跳的mac地址就使用arp协议,广播到所有子网设备)。在这一过程中目标IP和源IP始终不变,只有目的mac地址不断变化。

为什么要同时使用mac地址和ip地址?

不同的地址作用于不同的层,mac作用于数据链路层,ip作用于网络层;数据包中,“mac地址包在ip地址之外面” ,每当一个数据包被解析时,总是mac地址先被解析到。如果数据包的mac地址跟当前设备的mac地址不符,则直接丢弃,反之会继续向上层发送,这样能够提高效率。所以可以这样理解,ip地址是逻辑地址,它可以计算网络的最短路径,为数据包指明了下一个应该去的设备,将下一个设备的mac地址设为目的mac地址,从而使得该数据包能够被送到那个路由器。

总结起来可以这么理解,ip地址为数据包去向指明了方向,下一个站是哪里;而mac地址有点类似于一个跑腿的,能够将数据包运送到指定的设备。因此,可以看到在整个传输过程中目的ip始终不变,应为它表明了数据包的终点,每次到达一个路由器,都会计算出下一步怎么走最优,一旦找到了下一个目标路由器,则将目的mac设为那个路由器的mac,至于怎么到达,就不是ip地址需要操心的了,而是由数据链路层和物理层负责。

TCP/IP四层(应传网口)日常使用甚多

应用层=应用层+表示层+会话层
传输层=传输层
网络层=网络层
网络接口层=数据链路层+物理层

数据传输过程

在这里插入图片描述

网络层

主机联网的默认网关:192.168.0.1 (路由器的ip)

ARP协议(地址解析协议)
实现特定的ip地址,查询其对应的物mac地址(子网内查询,也就是同一个网络号之内查询),包括查询网关的mac。
IPV4协议

传输层

TCP协议(有点全面,头大)

特点:有链接,点对点(而不是广播),全双工通讯(非半双工,单工),面向字节流,可靠传输和交互,报文首部较大。
首部:20B ,有源目端口,序号,确认号,标志位(SYN,ACK,FIN,RESET等等)
什么保证了可靠传输机制:

  • 序号(sequence)
  • 确认号(ack)
  • 重传机制(超时重传,冗余确认)

连接管理:三次握手建立连接,四次挥手释放连接(SYN->ACK->FIN的过程)

应用层

HTTP协议 默认端口80

特点:无连接,无状态,可靠、基于TCP协议,端口默认是80
功能:用来规定客户端和服务端的数据传输格式。

HTTP请求详解
HTTP请求报文包含四个部分(请求行,请求头,空一行,请求体)
**请求行**
GET / HTTP/1.1		
	#请求行:请求方法(get)+URL(/)+HTTP版本信息(HTTP/1.1)		
**请求头部** key:value的形式				
Host: www.graduate.nuaa.edu.cn
	#host:请求的主机名
Connection: keep-alive
	#Connection:是否需要持久连接 
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36
	# user-agent:产生请求的客户端类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
	#accept:客户端可以识别的内容类型列表
Accept-Encoding: gzip, deflate
	#客户端使用的编码环境
Accept-Language: zh-CN,zh;q=0.9
	#客户端使用的预言环境
Cookie: Hm_lvt_b3b075d90cc24dcb1d5795260f02e2d6=1598665997; Hm_lpvt_b3b075d90cc24dcb1d5795260f02e2d6=1598672394; JSESSIONID=8CDABACD806F0607B0725EC3EB3C3966
	#Cookie 存储保持回话的重要信息(解决http的无状态)
**空一行**

**请求体**post方法中,会把请求需要的数据以key value形式发送请求

HTTP响应报文(响应行,响应头,空一行,响应体)
**响应行**
HTTP/1.1 200 OK      #版本信息+http状态码+原因描述	
**响应头部** key:value的形式	
Server: nginx	
	#server:http服务器软件信息
Date: Sat, 16 Jan 2021 09:38:45 GMT
	#date 响应时间
Content-Type: text/html
	#Content-Type响应类型
Content-Length: 9408
Connection: keep-alive
	#保持TCP连接不关闭,但是不会长久保持连接,服务器可设置(解决http的无连接)
X-Frame-Options: SAMEORIGIN
Frame-Options: SAMEORIGIN
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
X-Cache: MISS from nuaa
X-Cache-Lookup: MISS from nuaa:80
Via: 1.1 nuaa (squid/3.5.20)
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Headers: Authorization
Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS
**空一行**

**响应体(响应正文)**
<!DOCTYPE html>
<html lang="zh-CN">......

HTTP常见的状态码

1xx -接收的请求正在被处理
2xx -请求正常处理完毕 200
3xx -重定向302 304缓存 not modify
4xx -客户端出错了 404
5xx -服务器出错了 503

HTTP无连接

keep-alive设置
  • 1.开启:connection:keep-alive 表示长连接,不需要重新建立连接。
  • 2.关闭:在http请求头中设置connection:close 表示关闭长连接。
  • 3.设置连接时间:可在http header 中设置 keep-alive:timeout=5,max=1000
    timeout:超时时间,单位秒,超过这个时间之后就释放连接。
    max:最多的连接次数,若超过这个次数就强制断开连接

HTTP无状态

对每次请求服务器没有记录状态。
每个请求都是独立的。
优点:释放了服务器的压力
缺点:重传重复内容,增大数据量-资源浪费

  • cookie
    前面的请求信息保存为一个临时文件—cookie值,存放在浏览器里。
    关闭浏览器之后cookie会被清除。
  • session(永久的cookie的值)
    session id 保存在服务器上,传给客户端,客户端保存在内存中。
    session id可设置超时时间。

HTTPS (超文本传输安全协议) 默认端口443

https协议特点:
  • 传输数据加密
  • 身份认证 :可保护用户在与网站交互的时候免于窃取个人信息和计费数据(证书包含了网站地址,加密公钥,以及证书颁发机构等)
  • 保证传输数据完整性:防止信息被篡改。

HTTPS=HTTP+加密+身份认证+完整性保护
披着SSL外壳的http协议!

http和https协议的报文结构

报文结构

HTTP和HTTPS的对比

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值