计算机网络(TCP协议、TCP与UDP、三次握手、四次挥手);思考三次握手

1、OSI七层协议

在这里插入图片描述

第一层:物理层

机械性能:接口的形状,尺寸的大小,引脚的数目和排列方式等;
电气性能:接口规定信号的电压、电流、阻抗、波形、速率好平衡特性等;
工程规范:接口引脚的意义、特性、标准。
工作方式:确定数据位流的传输方式,如:半双工、全双工等。
物理层协议:美国电子工业协会(EIA)的RS232/RS422/RS423等;
国际电报电话咨询委员会(CCITT)的X.25/X.21等;
物理层的数据单位是位(BIT),典型设备时集线器HUB。
这主要是和硬件有关,与软件关系不大。

第二层:数据链路层

链路层屏蔽传输介质的物理特征,使数据可靠传送
内容包括:介质访问控制、连接控制、顺序控制、流量控制、差错控制和仲裁协议等。
链路层协议有:协议有面向字符的通讯协议(PPP)和面向位的通讯协议(HDLC)。
仲裁协议:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、Token Bus、Token Ring
链路层数据单位是帧,实现对MAC地址的访问,典型设备是交换机SWITCH。

第三层:网络层 IP

网络层管理连接方式路由选择
连接方式:虚电路和数据报服务。
虚电路是面向连接的,数据通讯一次路由,通过会话建立的一条通路。数据报是非连接的,每个数据报都有路由能力。网络层的数据单位是包,使用的是IP地址,典型设备时路由器Router。
这一层可以进行流量控制,但流量控制更多的是使用第二层或第四层。

第四层:传输层 TCP/UDP

提供端到端的服务,可以实现流量控制、负载均衡。
传输层信息包括端口、控制字和校验和。
传输层协议主要是TCP和UDP。
传输层位于OSI的第四层,这层使用的设备是主机本身。

第五层:会话层

会话层主要内容时通过会话进行身份验证、绘画管理和确定通讯方式。一旦建立连接,会话层的任务就是管理会话。

第六层:表示层

表示层主要是解释通讯数据的意义,如代码转换、格式变换等,使不同的终端可以表示。
还包括加密与解密、压缩与解压等。

第七层:应用层

应用层应该是直接面向用户的程序或服务,包括系统程序和用户程序,比如www、FTP、DNS、POP3和SMTP等都是应用层服务。
数据再发送时是数据从应用层至物理层的一个大包的过程,接收时是数据从物理层至应用层的一个解包过程。

总结OSI

从功能角度可以分为三组:1/2层解决网络通信问题,3/4层解决传输问题,5/6/7层处理对应用进程的访问。
从控制角度可分为二组:1/2/3层是通信子网,4/5/6/7是主机控制层。


2、TCP/IP五层协议

物理层:中继器、集线器、还有我们通常说的双绞线也工作在物理层
数据链路层:网桥(现已很少使用)、以太网交换机(二层交换机)、网卡(其实网卡是一半工作在物理层、一半工作在数据链路层)
网络层:路由器、三层交换机
传输层:四层交换机、也有工作在四层的路由器

在这里插入图片描述

3、TCP与UDP区别

TCP/IP协议与底层的数据链路层和物理层无关,只与传输层、网络层有关,这也是TCP/IP的重要特点。

  1. TCP
    TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复 用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;
  2. UDP
    而UDP则不为IP提供可靠性、 流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要 有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系 统)、TFTP(通用文件传输协议)等.

4、三次握手连接

A:我要和你连接,你创建一个连接,用来接收我发给你的数据。(即:你能同意一下和我建立连接吗?)
B:好的,我收到了你的请求,现在给你创建了一个用来接收你发来的数据的连接。(即:我同意和你建立连接,我告诉你同意了)
A:好的,我收到了你的消息,我可以用这个连接发数据给你了。(即:我收到了你的同意消息,现在我可以愉快地发数据给你了)

为什么还要发最后一次?

原因:如果第一条请求滞留了,A再发一次连接请求,B同意第二次连接请求。但是如果滞留的第一条请求又到了,即导致延迟到达B。B会再建立一个连接用于接收A的消息,由于现在A没有发出建立连接的请求,所以A不会理睬B,也不给B发数据。
但是B却以为新的运输连接已经建立了,并一直等待A发来数据,B的许多资源就这样浪费了。

  1. 三次握手-------相当于这样的事情:
    A:你能同意我当你女朋友吗?
    B:好啊,我把女朋友的位置腾出来给你,你收到消息了吗?
    A:我收到消息了。
    此时,如果B没有收到第三条消息,就不会腾出女朋友位置给A;如果收到了第三条消息,就会腾出女朋友位置给A

  2. 两次握手-------相当于这样的事情:
    A:你能同意我当你女朋友吗?
    B:好啊,我把女朋友的位置腾出来给你。
    缺点:如果A第一条消息滞留在网络中了,于是A重复发送了第一条消息,B也给A建立了连接。但是过了一段时间后,A与B释放连接了。此时,如果滞留在网络中的消息到达了B,于是B又给A建立了连接,但是这条连接不能用,因为A不发消息了。

两次握手的缺点相当于:
A:嗨,你能同意我当你女朋友吗?(该条消息滞留在网络中)
A:嗨,你能同意我当你女朋友吗?(A第二次发送的消息)
B:好啊,我把女朋友的位置腾出来给你。

…(两人聊得很high)

A:我要和你分手,不给你发消息了。
B:我刚才收到了你要和我分手的请求。
…(A进入到FIN-WAIT状态,B进入到close-wait状态)
…(此时A到B的连接已经释放,但是B到A的连接没有释放,且A还能收到B的消息)
…(于是,B向A发了许多消息,但是一直都没有收到A的回应)
B:我死心了,我也要和你分手,不给你发消息了。
A:我刚才收到了你要和我分手的请求。
…(A发出消息后,进入到TIME-WAIT状态,A沉思了2分钟后,把接收B消息的连接关闭了)
从此,A与B之间真的分手了

可是,突然有一天,B收到了以前A发过来的第一条消息(滞留在网络中的消息–“你能同意我当你女朋友吗?”),于是,
B:好啊,我这就把女朋友的位置腾出来给你。
…(于是,B可以向A发消息,但是一直都没有收到A的回应)
B不知道那是之前网络中滞留的消息,还以为A回心转意了。从此,B就这么一直把女朋友位置腾出来 给着A,尽管A并不会给A发消息。

所以TCP三次握手而不是两次握手,这真是一个凄美的故事。

4、四次挥手

理论上来说,服务器和客户机都可以主动结束,但一般情况下都是客户机主动申请断开。

第一二次挥手:客户机状态改变为FIN_WAIT_1 ,之后发送一个首部FIN比特为 1 的TCP报文;
服务器收到后变为CLOSE_WAIT状态。服务器接收并发还一个ACK报文。

第三四次挥手:服务器不管客户机受到ACK状态与否,都会发送一个首部FIN比特为 1 的TCP报文,服务器状态由CLOSE_WAIT转变为LAST_ACK,客户机接收到服务器的FIN包后会将自身状态改为TIME_WAIT,然后发送一个ACK包给服务器,如果处于TIME_WAIT的客户机又再次收到了服务器的FIN包,那么将重发一个ACK包。以确保TCP连接被正确释放,避免资源的浪费。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

攻城有术

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

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

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

打赏作者

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

抵扣说明:

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

余额充值