计算机网络,七层模型,三次握手四次挥手

计算机网络(1)

掌握五层协议和UDP和TCP 以及三次握手,四次挥手。
OSI七层模型
应用层
表示层
会话层
运输层
网络层
数据链路层
物理层
OSI的七层协议优点是建立了统一的工作流程,分布清晰,各司其职,每个步骤分工明确,降低了各个模块之间得耦合度,便于开发,理论也比较完整,但是它比较复杂且不实用,这里 采用一种五层协议的原理体系进行讲述。

#五层协议

  1. 应用层(Application Layer):应用层任务就是就是如何通过应用进程间的交互来完成特定的网络应用。(进程就是正在运行的程序) 简单记忆:提供用户服务,具体功能有与之相对应的程序进行实现。 (数据单位是 报文
  2. 运输层(Transport Layer):运输层的任务就是负责向两台主机中进程之间 的通信提供通用的数据传输服务,应用进程里该服务传送应用层的报文。 这里有两个重要的传输层协议:传输控制协议(Transmission Control Protocol TCP)----提供面向连接的。可靠的数据传输服务,数据单位是(报文段) 用户数据报协议(User Datagram Protocol UDP)--------提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)数据单位是(用户数据报)
  3. 网络层(Network Layer):网络层负责为分组 交换网上的不同主机提供通信服务,在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行 传送。 数据单位是 IP数据包,或简称数据报 ,简单记忆就是:路由选择,网络互联。

注意:无论在哪一层传送的数据单元,习惯统称的用“分组”来表示。

  1. 数据链路层(Data Link Layer):计算机网络有主机、路由器和连接他们的链路组成,从源主机发送到目的主机的分组必须在一段一段的链路上传送。数据链路层的任务就是将分组从链路层的一端传送到另一端。数据单位是, 简单记忆:进行数据交换,控制具体数据的发送。

  2. 物理层(Physical Layer):完成计算机网络中最基础的任务,在传输媒体上传输比特流,将数据链路层帧中的每个比特从一个结点通过传输媒体传送到下一个结点。数据单位(比特,实则就是二进制的形式)。 简单记忆:提供数据传输的硬件保证,网卡接口,传输介质。
    UDP的特点
    1、UDP无连接的,就是发送数据之前不需要建立连接(同时结束时也没有连接可释放),因此减少了开销和发送数据之间的时延。(时延就是数据从网络的一端传送到另一端所需要的时间)
    2、UDP使用的尽最大努力交付,及不保证可靠交付,同时也不使用流量控制和拥塞控制
    3、UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送效率降低。
    4、UDP是面向报文的,也就是说,两端之间发送数据的时候,不用把数据拆分的很细致,而是直接接收应用层发下来报文进行发送,或者直接接收收到的报文。
    5、UDP支持一对一,一对多,多对一和多对多的交互通信
    TCP 的特点
    1,、TCP是面向连接的运输层协议,也就是说,应用程序在使用TCP提供的服务之前,必须先建立TCP连接。要先把准备工作做好(比如说,初始化各种状态了,分配缓存资源了,接收端最大能接收的数据量什么的,都要先是先商量好)。那么好,肯定有始有终呀,完事了以后要来个很有仪式感的断开连接,也就是释放连接,释放他们两个在发送数据时候所用的信道资源和缓存资源。
    2、每一条TCP连接只能有两个端点
    3、TCP是提供可靠交付的服务。也就是说,端到端在进行发送数据的时候,数据无差错,不丢失,不重复,并且按序到达。(所以说还是TCP牛掰)
    4、面向字节流。TCP中的“流”指的就是流入到进程或从进程流出的字节顺序。你想啊,应用进程发下来的报文你就想成是一块一块的数据块,传输层收到的时候,它觉得,这玩意啥东东,它闲,他就给他拆,拆呀,分呀,很细致,(拆成二进制了,也就只有0和1 这些玩意了),然后按那一整块的拆分后的顺序进行发送(从左至右的发,规定)
    5、全双工通信。允许通信双方的应用进程在任何时候都能发送数据,TCP两端都设有发送缓存和接收缓存,用来临时存放双方发送的数据。
    TCP和UDP之间的区别
    1、TCP基于连接,UDP NO NO NO 不需要(无连接)
    2、UDP没有拥塞控制,TCP有的,,有的
    3、TCP面向字节传输,UDP面向报文
    4、TCP占用的资源大,UDP不是,你想,TCP能保证数据那么准确的传到另一个进程,那TCP里面肯定有很多什么机制(重传,检错。。。)你看,他口袋里面装这么多变态武器,他肯定重吧,重肯定有它的道理的,那UDP就不行了,只知道提个脑袋往前送数据,啥玩意也没有。弄不成事儿(嘎嘎嘎)
    5、UDP能一对多,多对一…,tcp只能一对一

    TCP应用的场景:多用于传输文件… UDP多用于视频聊天…

    三次握手四次挥手:
    TCP虽然是面向字节流的,但TCP传送的数据的单元是报文段,这报文段里面的这些东西稍微了解下吧,也就是这个报文段会携带这些关键信息传输给另一端。
    1.源端口号和目的端口(这个发送数据单元都会带,是绝对)
    2、序号(SEQ) 它占四个字节,tcp传送的报文段可看成连续的数据流,数据流中每一个字节都是按顺序进行编号的。举个列子(一报文段的序号字段值是301,而携带的数据共有100字节,说明,本报文段的数据的第一个字节序号是301,最后一个字节的序号是400)
    3、确认号,,占四个字节,**是期望收到对方的下一个报文段的第一个数据字节的序号。**他为什么这么期望这样呢,是用意的,为了数据传输的顺序无误嘛
    4、确认(ACK)
    5、复位(RST),就是当TCP连接严重崩溃,会执行释放连接重连
    6、同步(SYN),用来建立一个请求
    7、终止(FIN),用来释放连接

    三次握手:****(建立连接)
    在这里插入图片描述

    第一次握手:主机A像主机B发送请求报文段,同部位SYN = 1(这个东东意味着客户端有向服务端建立连接的意愿),选择一个序号(这个序号任意),表明下一个报文段的第一个数据字节的序号是X+1。

    第二次握手:主机B收到请求后,如果同意,发送确认信息,要把SYN和ACK位都置1发过去,确认ACK = X+1,同时发这个数据的时候,给自己也选择一个序号seq=y。

    第三次握手:主机A收到B连接确认后,给B确认,ACK位置1,确认号ack=y+1,而自己的序号seq=x+1。

    注意TCP规定,确认报文段不消耗序号。所以第三次握手设置自己的序号是seq=x+1.

    四次挥手(断开连接)
    在这里插入图片描述
    注意:断开连接双方谁先断都可以

第一次挥手:客户端向服务端发起断开连接的请求,会把FIN为置1,其自己的序列号为seq=x,此时客户端会进入终止状态,等待服务端大宋的FIN=1.

第二次挥手:主机B收到断开连接的通知后,会发送,会确认报文段ACK=1,再确认ack=x+1,在设定自己的序号seq=y。,连接处于半关闭状态,相当于,对主机B说,我已经没有数据要发送了,但是如果你还发送数据,我扔可以接受。嗯哼

第三次挥手:服务端办理完后续的业务逻辑之后,向客户端发送断开连接的请求FIN=1,同时再次确认客户端的断开连接请求,ack=x+1,因为我们不知道服务端处理后续的业务逻辑到底要多少的个请求,所以请求序列号我们是算不出来的,seq只要比是比y大就行seq=w,(我相信看的人你懂的)(还有这种情况应该会很少吧)

第四次挥手:主机A对主机B发送确认,把ACK置1,确认序列号ack=w+1,而自己的序列号是seq=x+1。(这个序号你懂的,嗯哼)

#给朋友推荐一本书《计算机网络教程》第五版 谢钧 谢希仁 编著的 还可以吧,有兴趣可以瞅瞅,这里面主要是讲理论

我的小总结,希望会对你会有所帮助,呦西//

接受普通,努力出众,干就完了!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rebirth-LSS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值