《Java后端知识体系》系之计算机网络

一、主机之间的通信方式

  1. 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。
  2. 对等:不区分客户和服务器。

二、电路交换与分组交换

  1. 电路交换:电路交换用于电话系统,两个用户在通信之前建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。通信的过程中不可能一直使用传输线路,因此电路交换对线路的利用率很低。
  2. 分组交换:每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不影响,因此同一条线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。

例如在一个邮局通信系统中,然后把相同目的地的邮件一起转发到下一个目的地,整个过程就是存储转发过程,分组交换也使用了存储转发过程。

三、计算机网络体系结构

在这里插入图片描述

  • 1:OSI结构分为
    • 应用层:为特定应用程序提供数据传输服务,例如HTTP、DNS等协议,数据单位为报文。
    • 表示层:数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。
    • 会话层:建立及管理会话。
    • 传输层:为数据提供通用数据传输服务。运输层包括两种协议:传输控制协议TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议UDP,提供无连接,尽最大努力的传输服务,数据单位为用户数据报。TCP提供完整性服务,UDP提供及时性服务。
    • 网络层:为主机提供数据传输服务。传输层协议是为主机中的进程提供数据传输服务。网络策划给你把传输层传递下来的报文段或者用户数据报封装成分组。
    • 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。
    • 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能频闭传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。物理层中通信方式有三种单工通信、半双工通信、全双工通信。
  • 2:五层协议分为:
    • 应用层:为特定应用程序提供数据传输服务,例如HTTP、DNS等协议,数据单位为报文。

    • 传输层:为数据提供通用数据传输服务。运输层包括两种协议:传输控制协议TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议UDP,提供无连接,尽最大努力的传输服务,数据单位为用户数据报。TCP提供完整性服务,UDP提供及时性服务。

    • 网络层:为主机提供数据传输服务。传输层协议是为主机中的进程提供数据传输服务。网络策划给你把传输层传递下来的报文段或者用户数据报封装成分组。

    • 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的主机提供数据传输服务。数据链路层把网络层传下来的分组封装成帧。数据链路层中的基本问题有三个:

      • 1、封装成帧:将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。
      • 2、透明传输:如何帧的数据部分包含和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转移字符。如果数据部分出现转义字符。那么就在转义字符前面再加个转义字符,在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。
      • 3、差错检测:数据链路层广泛使用了循环冗余检验来检查比特差错。
    • 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能频闭传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。

  • 3:TCP/IP分为:应用层、运输层、网际层、网络接口层
    其中五层协议中的数据链路层和物理层合并为网络接口层
  • 4:数据在各层之间的传递过程
    • 向下的过程中,需添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部
      路由器只有下面三层协议:网络层、数据链路层、物理层;因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此不需要传输成和应用层。

四、三次握手

在TCP建立连接过程中,客户端与服务端需要进行三次确认机制来实现两者之间的连接,也就是我们所说的三次握手。实现图如下:(图片来自)
在这里插入图片描述

  1. 第一次握手:客户端要向服务端发起连接请求,首先客户端随机生成一个起始序列号x,那客户端向服务端发送的报文段包含SYN标志位(也就是SYN=1),序列号seq=x。
  2. 第二次握手:服务端收到客户端发过来的报文后,发现SYN=1,知道这是一个连接请求,于是将客户端的起始序列号x存起来,并且随机生成一个服务端的起始序列号y。然后给客户端回复一段报文,回复报文包含SYN和ACK标志(也就是SYN=1,ACK=1)、序列号seq=y、确认号ack=x+1(客户端发过来的序列号+1)。
  3. 第三次握手:客户端收到服务端的回复后发现ACK=1并且ack=x+1,于是知道服务端已经收到了序列号为x的那段报文;同时发现SYN=1,知道了服务端同意了这次连接,于是就将服务端的序列号y给存下来。然后客户端再回复一段报文给服务端,报文包含ACK标志位(ACK=1)、ack=y+1(服务端序列号+1)、seq=x+1(第一次握手时发送报文是占据一个序列号的,所以这次seq就从x+1开始,需要注意的是不携带数据的ACK报文是不占据序列号的,所以后面第一次正式发送数据时seq还是x+1)。当服务端收到报文后发现ACK=1并且ack=y+1,就知道客户端收到序列号为y的报文了,就这样客户端和服务端通过TCP建立了连接。

五、四次挥手

客户端与服务端要断开连接时需要进行四次的断开操作来实现关闭连接。
在这里插入图片描述
比如客户端初始化的序列号x,服务端初始化的序列号y。TCP连接成功后客户端总共发送了1000个字节的数据,服务端在客户端发FIN报文前总共回复了2000个字节的数据。

  1. 第一次挥手:客户端向服务端发出连接释放报文(当然数据没发完时也可以发送连接释放报文并停止发送数据),释放连接报文包含FIN标志位(FIN=1)、序列号seq=u。需要注意的是客户端发出FIN报文段后只是不能发数据了,但是还可以正常收数据;另外FIN报文段即使不携带数据也要占据一个序列号。
  2. 第二次挥手:服务端收到客户端发的FIN报文后给客户端回复确认报文,确认报文包含ACK标志位(ACK=1)、确认号ack=u(客户端FIN报文序列号u+1)、序列号seq=v。此时服务端处于关闭等待状态,而不是立马给客户端发FIN报文,这个状态还要持续一段时间,因为服务端可能还有数据没发完。
  3. 第三次挥手:服务端将最后数据发送完毕后就向客户端发出连接释放报文,报文包含FIN和ACK标志位(FIN=1,ACK=1)、确认号和第二次挥手一样ack=u+1、序列号seq=w。
  4. 第四次挥手:客户端收到服务端发的FIN报文后,向服务端发出确认报文,确认报文包含ACK标志位(ACK=1)、确认号ack=w+1、序列号seq=u+1。注意客户端发出确认报文后不是立马释放TCP连接,而是要经过2MSL(最长报文段寿命的2倍时长)后才释放TCP连接。而服务端一旦收到客户端发出的确认报文就会立马释放TCP连接,所以服务端结束TCP连接的时间要比客户端早一些。

六、知识总结

  • TCP和UDP区别
    • 传输控制协议(TCP):TCP是面向连接的服务,提供可靠传输。传送数据之前需要先建立连接,传输完成后需要释放连接。TCP不提供多播或广播服务。TCP建立连接时会通过三次握手来建立连接。TCP一般用于邮件、文件的传输等。
    • 用户数据协议(UDP):UDP传送数据之前不需要先建立连接,远程主机在接收到UDP报文后不需要发送确认信息,UDP不提供可靠传输,例如即时通讯(如:qq语音、直播等)。
  • 打开一个网页这个过程?
    • 1、DNS解析
    • 2、TCP连接
    • 3、发送HTTP请求
    • 4、服务器处理请求并返回HTTP报文
    • 5、浏览器解析渲染页面
    • 6、连接结束
  • Cookie作用?与Session的区别?
    • Cookie一般用来保存用户信息,Cookie数据保存在浏览器端(客户端)
    • Session主要作用是通过服务端记录用户的状态,Session保存在服务端

借鉴自:https://blog.csdn.net/ThinkWon/article/details/104903925

今天依然是会敲代码的汤姆猫,但是并发编程的知识太多!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值