网络通讯协议

什么是协议?

协议就是一种规范。

一、OSI七层

osl(open syetem interconnect)
开放式系统互联
物理层、链路层、网络层、传输层、会话层、表示层、应用层。
1.物理层:
作用:建立物理连接,传输物理信号。
解决两个硬件之间怎么通信的问题。
光纤,网线,中继器等。
传递的是电信号,一般通过电压来表示0和1

光纤:传递的是光信号,
光猫:modem,专业叫法:调制调节器,作用:光信号和电信号的转换。

手机:通过电磁波传递信号,也是转成0和1

计算机中不管是视频,音频,图片,文档等,最终都是通过1和0的形式来传递的。

2.数据链路层:
通过MAC地址(物理地址)找到对应的计算机。
通过各种控制协议,将有差错的物理信号变为无差错的,能可靠传输数据帧的数据链路。
作用:物理寻找,数据的成帧,流量控制,数据的检错,重发等。
在这一层工作的设备:交换机
交换机能够识别数据包中的物理地址,然后根据物理地址进行数据转发。
数据单位称为帧(frame),帧长度(64-1518 byte)
3.网络层:
网络层的软件拿到上层传下来的数据包之后,会往数据包中写入发送发的ip和目的地接收方的ip地址。然后再往下层去传递

接收方的网络层软件拿到接收的数据包之后,会查看里面的ip,如果是发给自己的,那么就穿个传输层,如果不是发给自己的,那么看本机是否开了数据转发功能,如果开了数据转发功能那么会将数据包传出去,如果没有开这个功能,那就是删除掉。

路由器能够识别网络层的数据,能根据数据包中的ip地址进行数据包的转发。
数据单位称为数据包(packet)
LAN:local area network 局域网
WAN:wide area network 广域网
WLAN:wireless local area network 无线局域网,就是wifi
家用路由器包含了交换机和路由两个功能。
路由器工作在第三层。专门负责网段转发数据。只要有一个口连接到交换机,这个交换机上的所有电脑都能上外网。
4.传输层
通过端口号找到对应的程序,并控制传输速度等功能。
把大的数据包文件拆分成多个包,数据单位称为数据段(segment)
tcp协议:可靠传输,如果传错了一个数据包,会要求重新传。
udp:不可靠传输,损坏的数据包不重传。
端口号:每个联网的软件,必须像操作系统申请一个端口号。1~65535之间,而且别的软件使用的端口号,另一个软件是用不了的。数据到达电脑后,根据端口号系统就知道将数据转给哪个软件。

传输层的软件拿到上层传下来的数据之后,会写入发送方软件使用的端口号和接收方软件使用的端口号,接收方的传输层软件接收到这个数据包之后,根据接收方的端口号来转发数据给对应的工端口号作的程序。
5.会话层、表示层、应用层:
会话层:管理是否允许两台电脑进行连接。连接中断后,是否重新连接。
表示层:数据编码、加密解密、压缩。
应用层:http浏览网页、ftp传输文件等。

二、tcp/ip

IP协议
ip地址

  • IP(internrt protocol),是internet层(网络层)的协议
  • 通过ip地址将网络连接起来,在源ip地址和目的IP地址之间传送数据。
  • IP地址有两个版本ipv6和ipv4
  • ipv4为32位长度的二进制数字、ipv6为128位长度的二进制数字。
  • 通过子网掩码将IP地址分割成网络地址和主机地址。
  • ipv4地址总共只有43亿个,已经在201x年用完了。
  • pv6地址可以分配308万亿个,暂时够用
  • IPv4 为32位长度的二进制数字,为了方便人们使用,每8转成一个十进制数字。
  • IPv6 为128位长度的二进制数字,转成的是十六进制数字显示
  • 子网掩码和ipv4配合在一起出现、
    子网掩码也是32位二进制数字,前面一堆1,后面一堆0
  • 通过子网掩码前面的1的个数,将ip地址分隔成网络地址和主机地址两部分。 网络地址相同的ip地址,就是在同一个局域网。
  • 网络地址相同则表示在同一个局域网中,传输数据不需要路由器。
  • 网络地址不同则需要路由器转发数据包,路由器同时拥有两个或多个IP地址。

tcp协议

  • 传输层的协议
  • tcp协议提供了一种端到端的(程序之间的)、基于连接的、可靠的通信服务。
    tcp协议-三次握手
    SYN(synchronization,同步标志):这个标志用于发起一个连接,建立一个连接并设置初始序列号。
    ACK(ackownledgment,确认标志):应答相应,这个字段在建立连接(三次握手)和数据传输期间使用,用于确认数据包已经收到,也用于确认发起请求和拆除请求
    三次握手的过程
    第一次握手:发起方发送第一个数据包,里面包含了一个SYN标志
    第二次握手:接收方回一个数据包,这个数据包里面有两个标志,ACK和SYN,ACK表示对前面的SYN请求的确认,然后自己也会发一个SYN连接请求到原发起方
    第三次握手:原发起方也回一个ACK标准的数据包,连接就建立成功
    tcp协议-四次挥手
    tcp连接的关闭叫做四次挥手。客户端或服务器都能发起断开申请。
    四次挥手
    FIN(Finnish,完成标志):这个位字段表示TCP连接的结束,表示正在断开连接或关闭连接
    过程:
    第一次挥手:希望断开的一方,发送一个数据包,里面包含了FIN标志
    第二次挥手:接收方回一个ACK标志,表示确认。如果接收方还有数据没传完,可以继续传
    第三次挥手:接收方没有数据要传了,也会发送一个带FIN的标志的数据包
    第四次挥手:原断开发起方回一个ACK标志的数据包,并等待一段时间(两倍报文最大生存时间)才真正断开,因为网络中有可能丢包,怕最后一个ACK丢包,别人收不到。

三、UDP

定义:udp(user data protocol)用户数据报协议,也是传输层协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!udp适用于一次只传输少量数据、可靠性要求不高的应用环境。
对比:与tcp最大的差别在于它在建立连接前不会进行三次握手,属于不可靠的传输,错误包不会传输。
优点:可以显著地提高性能。
应用:
udp协议:网络视频等应用
tcp协议:ftp下载、http浏览网页

四、wireshark数据对应协议层

  • frame:数据帧概况
  • ethernet ||:数据链路层以太网帧头部信息
  • internet protocol version 4:互联网层IP头部信息
  • transmission control protocol:传输层的数据段头部信息,此处是tcp
  • hypertext transfer protocol:应用层的信息,此处是http协议

五、http协议

http(hypertext transfer protocol)超文本传输协议
定义:规定了浏览器和服务器之间互相通信的规则,通过internet传送文档的数据传送协议。
应用层协议
http协议是一种请求-应答式的协议。
客户端请求资源,服务端响应把资源发送给客户端。
http的版本差异化:

  • 在http1.0中客户端的每次请求都要建立一次单独的tcp连接,在处理完本次请求后,就自动释放tcp连接
  • 在http1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后在发送下一个请求。
  • http2.0对http1.1标准做了改进,传输速度更快,但仍然传输层是基于tcp协议。
  • http3.0协议,最大的改进就是用了udp协议来替代tcp协议传输,传输速度进一步提升。
  • 目前大多数网站还是使用http1.1版本的协议

六、web工作原理

web服务器的作用:监听客户端请求、处理客户端请求、客户端和数据库之间的屏障
应用服务器的作用:处理复杂系统的业务和数据库的访问
web服务器:一般用来放前端代码,如htm、css、javascript代码文件,以及一些图片等文件。
应用服务器:一般方后端开发代码,比如java代码,运行java写的功能,包括动态生成sql语句,以及对数据库做整理等。
数据库服务器:就是只能装数据库,接受sql语句,对数据文件进行管理

七、URL的组成部分

  • 协议类型:http或https
  • 主机名:域名或ip
  • 端口号:0~65535(http默认端口80,http默认443)
  • 页面文件或路径
  • 附加部分:查询参数,名字=值 形式多个参数使用&符号间隔
    域名:是互联网上用于寻找网站或电子邮件服务器的名称。相当于网络中的门牌号,用户可以通过域名快速找到想要访问的网站或邮箱。
    域名由两部分组成:域名名称和域名后缀
    baidu.com)(baidu是域名名称、com域名后缀

https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E9%87%8D%E5%BA%86,CQW&ts=%E6%9D%AD%E5%B7%9E,HZH&date=2024-08-05&flag=N,N,Y

%E9%87%8D%E5%BA%86这个叫URL编码。
有些服务器不支持url地址中包含中文以及空格等特殊符号,浏览器会将这些字符用URL编码之后再发送给服务器。
可以找一些在线编码解码的网站转码查看。
https://www.qianbo.com.cn/Tool/Url-Encode.html

八、http请求

  • 请求:requert,由客户端发送给服务器
  • http请求由三部分组成,分别是:请求行(requert line)、请求头部(header)、请求数据(body)
  • 常用请求方法:get和post
  • get请求主要是数据的获取
  • post请求主要是数据的提交
  • 其他请求方法:HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT

九、GET请求

get请求的解释1

第一行为请求行:
get/shop/search.html http/1.1,指明了三个关键信息:请求类型为get,资源url路径为/shop/search.html,协议类型和版本为http/1.1。
下面的为请求头部分:

  • accept:告诉服务器当前浏览器能接受和处理的文件类型,如果*/*表示可接受所有类型。
  • accept-language:告诉服务器当前浏览器能接受和处理的语言。上述请求表示浏览器接受zh-cn(中国中文)。另外的有en-us(美国英文)等。
  • user-agent:告诉服务器当前客户端的操作系统和浏览器内核版本信息。

get请求的解释2

  • accep-encoding:告诉服务器当前客户端支持gzip格式压缩,这样服务器可以将HTML,javascript或css这种文本型资源压缩后在传递给浏览器,浏览器接收到后有解压缩的能力。这样可以显著减少资源占用的宽带和网络上传输的时间。
  • host:要访问的服务器主机名或IP地址。
  • connection:keep-alive,告诉服务器在完成本次请求的响应后,保持该tcp连接不释放,等本次连接的后续请求。这样可以减少打开关闭tcp连接的次数,提升处理性能。另外可选的选项是close,表示直接响应接受完成后直接将其关闭。
  • referer:指定发起该请求的源地址。从哪个页面跳转过来的
  • origin:指定当前请求来自于哪个站点
  • cookie:将客户端已保持的该网络的cookie信息发送给服务器端。(cookie信息是键值格式的信息,由服务器发送给浏览器后,浏览器每次发起请求都会把cookie信息发回给服务器)

十、POST请求的多个header

指明body内容的格式:
content-type:application/x-www-form-urlencoded
application/json 表示json格式
image/png表示发送的是一张png格式的图片
指明body内容的长度,单位是字节
content-length:56

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值