网络通信1-OSI协议|http|https

一、osi七层协议

1、原因

在这里插入图片描述
简化网络复杂度,每一层职责清晰,只和相邻层打交道。

2、对应tcp|ip

在这里插入图片描述

3、层次分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1)中继器是在OSI模型的第一层–物理层上延长网络的设备。由电缆传过来的电信号或光信号经由中继器的波形调整和放大再传给另一个电缆
2)网桥工作在OSI参考模型的数据链路层(第二层),将两个局域网LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。
3)路由器工作在OSI模型第3层–网络层。负责连接两个网络、并对分组报文进行转发的设备。
4)负载均衡器,就是4~7层交换机的一种。 宽带控制,也是4~7层交换机的重要功能之一。
4~7层交换机的应用场景还有很多。例如广域网加速器、特殊应用访问加速以及防火墙(可以防止互联网上的非法访问)等。

4、数据传输

在这里插入图片描述

5、一次请求

在这里插入图片描述
1)客户端-dns-udp-apr-.略.-路由器(本身是一个三层交换机,在自身内解析)-光猫-运营商-dns服务器-原路返回给客户端ip地址
2)客户端拿到ip再按上述步骤请求到路由器-运营商-路由器-服务端-服务端处理http请求返回响应给客户端
在这里插入图片描述

二、http

在这里插入图片描述
在这里插入图片描述
Http Header里的Content-Type一般有这三种:
1)application/x-www-form-urlencoded:数据被编码为名称/值对。这是标准的编码格式。
2)multipart/form-data: 数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
3)text/plain: 数据以纯文本形式(text/json/xml/html)进行编码,其中不含任何控件或格式字符。postman软件里标的是RAW。
form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。
当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串追加到url后面,用?分割,加载这个新的url。
当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。
当action为post且Content-Type类型是multipart/form-data,浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。

三、tcp

ssh用xshell链接linux时,用的就是tcp协议

1、特点

1)TCP协议是有连接的,有连接的意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接。而UDP是无连接的
2)TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到。
3)TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节。
4)TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送速率
5)TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信。
6)TCP面向的是字节流的服务,UDP面向的是报文的服务。

2、结构

在这里插入图片描述
http协议数据在data里

3、握手

在这里插入图片描述
在这里插入图片描述
s代表sync .代表ack

4、服务端处理

内核状态转换,应用程序accept后就可以进行通信
在这里插入图片描述

5、挥手

客户端和服务端都可以发起挥手
在这里插入图片描述
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,“你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

1)确保最后一个确认报文能够到达(如果B没收到A发送来的确认报文,那么就会重新发送连接释放请求报文,A等待一段时间就是为了处理这种情况的发生)
2)避免新旧链接混淆。(等待2MSL可以让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接请求不会出现旧的连接请求报文)

6、可靠性

1)tcp基于字节流要对报文进行拆分,拆分后利用序列号保证有序性、和去重。
在这里插入图片描述

7、滑动窗口

在这里插入图片描述
1)背景
发送和返回ack都有可能丢失,每次等待重复,效率很低
滑动窗口与累计确认(http的发展)
在这里插入图片描述

2)滑动窗口不同的协议算法
在这里插入图片描述
3)作用
不可靠链路上可靠地传输帧
保持帧的传输顺序
支持流量控制

四、https

1、在http和tcp层之间加了SSL

2、TLS通信过程

服务端的公钥公开,私钥保留。能保证客户端到服务端这一次非对称加密安全。
1)三次握手
2)client将支持的加密算法发给server
3)server选择一个算法,以及公钥数字证书(包含ca、公钥、数字签名等,可信机构颁发)
4)client验证证书(通过公钥和数字签名解密,比对摘要验证),使用非对称加密如rsa.将对称算法的密钥传给服务端。
5)server私钥解密获取对称密钥
之后就可以用对称密钥加密双向传输。
比喻:抗战时两地通信。A将密码本(对称密钥)放在盒子里,上锁(公钥)
B拿到后用钥匙(私钥)将密码本拿出,以后就能用密码本加密通信
在这里插入图片描述

五、socket

Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。

1 、解释

Socket非常类似于电话插座。以一个国家级电话网为例,电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于Socket号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的号码,相当于对方有一个固定的Socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。假如对方在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向Socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭Socket,撤消连接。
在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与Socket机制非常相似。Socket利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。

六、参考

https://www.cnblogs.com/linhaifeng/articles/5937962.html#_label18
https://www.bilibili.com/video/BV1Qt4y1C7XK?p=5

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP/IP协议和OSI模型都是网络通信领域的两个重要概念。TCP/IP协议是实际应用中使用最广泛的协议,而OSI模型则是一个理论模型,用于描述计算机网络通信的过程。下面是TCP/IP协议和OSI模型的比较: 1.层数不同:TCP/IP协议是一个四层协议系统,而OSI模型是一个七层协议系统。 2.协议不同:TCP/IP协议是由互联网工程任务组(IETF)开发的,而OSI模型是由国际标准化组织(ISO)开发的。 3.应用不同:TCP/IP协议主要用于互联网,而OSI模型则更多地用于学术研究和教学。 4.实现不同:TCP/IP协议是实际应用中使用最广泛的协议,而OSI模型则很少被实际应用。 5.层次划分不同:TCP/IP协议的四层是应用层、传输层、网络层和数据链路层,而OSI模型的七层是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。 6.协议族不同:TCP/IP协议族是一组不同层次上的多个协议的组合,而OSI模型则是一个理论模型,没有具体的协议族。 ```shell # 代码示例 # TCP/IP协议与OSI模型的比较 | TCP/IP协议 | OSI模型 | | --- | --- | | 由IETF开发 | 由ISO开发 | | 适用于互联网 | 适用于学术研究和教学 | | 四层协议系统 | 七层协议系统 | | 应用层、传输层、网络层、数据链路层 | 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 | | 实际应用广泛 | 很少被实际应用 | ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值