【计算机基础】计算机网络(持续更新)

计算机网络(持续更新)

OSI七层模型

物理层:比特流传输
数据链路层:帧编码和错误纠正
网络层:寻址和路由
传输层:为主机之间通讯提供数据传输服务
会话层:建立 维护 重连应用之间的绘画
表示层:处理数据编码,解码,压缩等
应用层:为计算机用户提供服务
实现复杂,效率低,指定周期长,虽然失败了但是提供了理论接触

TCP/IP四层模型

1.网络接口层:可以看成上面数据连路层加物理层结合,实现计算机节点之间比特流透明传输,尽可能屏蔽传输介质和物理设备的差异,把网络层交下来的IP数据包组装成帧,其中包括必要的控制信息。
2.网络层:分组交换网上不同主机之间的通讯,选择合适的路由,使主机运输层传下来的分组,通过网络层中路由器找到目的主机。
3.传输层:主要任务是负责向两台终端设备之间的通讯提供通用的数据传输服务,主要使用的协议是TCP和UDP协议
4.应用层:位于传输层之上,主要提供两个终端设备上的应用程序之间信息交换的服务,它定义了信息交换的格式,消息会交给下一层传输层来传输。 我们把应用层交互的数据单元称为报文。

应用层常见协议

HTTP:

	超文本传输协议HTTP,HyperText Transfer Protocol) 主要是浏览器和客户端之间通讯设计,基于TCP连接,后面详细介绍。

SMTP:

简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)基于TCP协议用来发邮件。

FTP:

	FTP 协议 主要提供文件传输服务,基于 TCP 实现可靠的传输。使用 FTP 传输文件的好处是可以屏蔽操作系统和文件存储方式。

SSH:

	SSH( Secure Shell) 是目前较可靠,为远程登录会话和其他网络服务提供安全性的协议。可靠传输也建立在TCP之上。

电子邮件

###发送过程
1.先通过SMTP协议,把写好的邮件交给邮箱服务器,比如qq服务器;
2.然后识别我发送的邮箱的服务器,然后转发给需要的服务器;
3.需要的服务器接受邮件,然后通知是之前发送邮件的用户发来邮件,使用POP3/IMAP协议将邮件取出来。
注意:SMTP 只负责邮件的发送,真正接受的是POP3/IMAP。

判断邮件是否真实存在

1.查找邮箱域名对应的 SMTP 服务器地址
2.尝试建立连接
3.发送邮件测试是否真实存在

HTTP协议

	HTTP 是一种无状态的协议,以TCP传输层协议作为底层协议,默认端口号为80过程如下:
		1.服务端在80端口等待客户请求;
		2.浏览器与服务器建立TCP连接;
		3.服务器接受浏览器的TCP连接;
		4.浏览器与服务器交换HTTP信息;
		5.关闭TCP连接;
	优点:扩展性强,速度快,支持跨平台
	Session 机制可以解决HTTP无状态的问题,通过服务端记录用户状态。

状态码

200: OK请求被成功处理。
400:Bad Request 发送的HTTP请求存在问题。比如请求参数不合法、请求方法错误;
403:Forbidden 拒接访问,一般针对非法请求;
404:Not Found 请求的资源未在服务端找到;
500:Internal Server Error 服务器出现异常;
502:Bad Gateway 我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。

HTTP 1.0 和 HTTP 1.1

1.1状态码多
1.0 为短连接 1.1支持长连接;
1.1更多的缓存机制,多缓存控制策略
1.1在请求头加入了host字段

HTTPS

HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本,底层也是TCP协议,并额外使用SSL/TLS协议用于加密验证,端口号为443.
优点:高保密性。信任度高。
SSL/TLS 的核心要素是非对称加密。非对称加密采用两个密钥——一个公钥,一个私钥。在通信时,私钥仅由解密者保存,公钥由任何一个想与解密者通信的发送者所知。
HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://

TCP

三次握手

ACK:确认序号有效。(为了与确认号ack区分开,我们用大写表示)
SYN:发起一个新连接。
FIN:释放一个连接。
目的为了建立连接,具体过程:
1.开始客户端与服务端都是CLOSED状态,客户端主动打开连接,服务端被动打开,结束CLOSED状态进度LISTEN状态
2.客户端随机序列号SEQ=client_isn,同时SYN置为1,表示向服务端发起连接,不包含应用层数据,客户端SYN_SEND状态;
3.服务端收到消息后,自己的序列号SEQ=server_isn,放入TCP头部序号字段,确认应答号ack = client_isn+1,SYN 和ACK都置为1,发给客户端,也不包含应用层数据,服务端 SYN_RECV 状态;
4.客户端收到服务端报文后,ACK置1,确认应答号ack = server_isn+1,发给服务端,状态为ESTABLISHED 。
第三次握手是可以带数据的,步骤4,为了防止服务器开启一些无用的连接

四次挥手

	1.客户端发送一个 FIN  SEQ=X 标志的数据包到服务端,用来关闭客户端到服务器的数据传送。然后,客户端进入 FIN-WAIT-1 状态;
	2.服务器收到这个 FIN SEQ=X 标志的数据包,它发送一个 ack SEQ=X+1标志的数据包到客户端 。然后,此时服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态;
	3.服务端关闭与客户端的连接并发送一个 FIN  SEQ=y 标志的数据包到客户端请求关闭连接,然后,服务端进入LAST-ACK状态;
	4.客户端发送 ack SEQ=y+1标志的数据包到服务端并且进入TIME-WAIT状态,服务端在收到 ack SEQ=y+1标志的数据包后进入 CLOSE 状态。此时,如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后,客户端也可以关闭连接了。
	服务端2,3不可以合并,因为可能有数据没有发完,要发完数据再进行FIN。
	如果第二次挥手时服务器ACK没有送达客户端,会重新发送FIN请求
	MSL(Maximum Segment Lifetime) : 一个片段在网络中最大的存活时间,2MSL 就是一个发送和一个回复所需的最大时间。如果直到 2MSL,Client 都没有再次收到 FIN,那么 Client 推断 ACK 已经被成功接收,则结束 TCP 连接。

为什么第四次挥手要等2MSL才进入CLOSED状态?

 第四次挥手时,客户端发给服务器ack可能丢失,如果服务端某些原因没有收到ack的话,服务端就会重发,防止服务端没有收到还在不断重发FIN。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值