计算机网络知识点梳理(上)

一、传输层概述
1.作用:传输层为它上面的应用层提供通信服务。
在OSI七层参考模型中,传输层是面向通信的最高层,也是用户功能的最底层。
2.传输层两大重要的功能:复用 和 分用。
复用:在发送端,多个应用进程公用一个传输层;
分用:在接收端,传输层会根据端口号将数据分派给不同的应用进程。
3.和网络层的区别:
网络层为不同主机提供通信服务,而传输层为不同主机的不同应用提供通信服务。
网络层只对报文头部进行差错检测,而传输层对整个报文进行差错检测。

二、UDP(用户数据报协议)详解
1)UDP的特点
1.UDP只在IP数据报服务的基础上增加了少量的功能:复用与分用、对整个报文的差错检测。
2.UDP是无连接的 
通信前不需要建立连接,通信结束也无需释放连接。
3.UDP是不可靠的 
它是尽力而为交付,不能确保每一个数据报都送达。
4.UDP是面向报文的 
所谓『面向报文』就是指:UDP数据传输的单位是报文,且不会对数据作任何 拆分 和 拼接 操作。 
在发送端,应用程序给传输层的UDP什么样的数据,UDP不会对数据进行切分,只增加一个UDP头并交给网络层。 
在接收端,UDP收到网络层的数据报后,去除IP数据报头部后遍交给应用层,不会作任何拼接操作。
5.UDP没有拥塞控制 
UDP始终以恒定的速率发送数据,并不会根据网络拥塞情况对发送速率作调整。这种方式有利有弊。 
弊端:网络拥塞时有些报文可能会丢失,因此UDP不可靠。 
优点:有些使用场景允许报文丢失,如:直播、语音通话,但对实时性要求很高,此时UDP还是很有用武之地的。
6.UDP支持一对一、一对多、多对多、多对一通信 
而TCP只支持一对一通信。
7.UDP首部开销小,只有8字节。 
而TCP头部至少由20字节,相比于TCP要高效很多。

三、TCP(传输控制协议)详解
1)TCP特点
1.TCP是面向连接的 
通信前需要建立连接,通信结束需要释放连接。
2.TCP提供可靠交付服务 
所谓『可靠』指的是:TCP发送的数据无重复、无丢失、无错误、与发送端顺序一致。
3.TCP是面向字节流的 
所谓『面向字节流』指的是:TCP以字节为单位。虽然传输的过程中数据被划分成一个个数据报,但这只是为了方便传输,接收端最终接受到的数据将与发送端的数据一模一样。
4.TCP提供全双工通信 
所谓『全双工通信』指的是:TCP的两端既可以作为发送端,也可以作为接收端。
5.一条TCP连接的两端只能有两个端点 
TCP只能提供点到点的通信,而UDP可以任意方式的通信。

2)TCP连接 与 套接字
1.什么是『TCP连接』? 
TCP连接是一种抽象的概念,表示一条可以通信的链路。 
每条TCP连接有且仅有两个端点,表示通信的双方。且双发在任意时刻都可以作为发送者和接收者。
2.什么是『套接字』? 
一条TCP连接的两端就是两个套接字。 
套接字=IP地址:端口号。 
因此,TCP连接=(套接字1,套接字2)=(IP1:端口号1,IP2:端口号2)

3)标识符 
TCP有7种标识符,用于表示TCP报文的性质。它们只能为0或1。
1.URG=1 
当URG字段被置1,表示本数据报的数据部分包含紧急信息,此时紧急指针有效。 
紧急数据一定位于当前数据包数据部分的最前面,紧急指针标明了紧急数据的尾部。 
如control+c:这个命令要求操作系统立即停止当前进程。此时,这条命令就会存放在数据包数据部分的开头,并由紧急指针标识命令的位置,并URG字段被置1
2.ACK=1 
ACK被置1后确认号字段才有效。 
此外,TCP规定,在连接建立后传送的所有报文段都必须把ACK置1。
3.PSH=1 
当接收方收到PSH=1的报文后,会立即将数据交付给应用程序,而不会等到缓冲区满后再提交。 
一些交互式应用需要这样的功能,降低命令的响应时间。
4.RST=1 
当该值为1时,表示当前TCP连接出现严重问题,必须要释放重连。
5.SYN=1 
SYN在建立连接时使用。 
当SYN=1,ACK=0时,表示当前报文段是一个连接请求报文。 
当SYN=1,ACK=1时,表示当前报文段是一个同意建立连接的应答报文。
6.FIN=1 
FIN=1表示此报文段是一个释放连接的请求报文。

四、TCP三次握手
1)第一次握手
客户端向服务端发送连接请求报文段。该报文段的头部中SYN=1,ACK=0,seq=x。请求发送后,客户端便进入SYN-SENT状态。
PS1:SYN=1,ACK=0表示该报文段为连接请求报文。
PS2:x为本次TCP通信的字节流的初始序号。 
TCP规定:SYN=1的报文段不能有数据部分,但要消耗掉一个序号。
2)第二次握手
服务端收到连接请求报文段后,如果同意连接,则会发送一个应答:SYN=1,ACK=1,seq=y,ack=x+1。 
该应答发送完成后便进入SYN-RCVD状态。
PS1:SYN=1,ACK=1表示该报文段为连接同意的应答报文。
PS2:seq=y表示服务端作为发送者时,发送字节流的初始序号。
PS3:ack=x+1表示服务端希望下一个数据报发送序号从x+1开始的字节。
3)第三次握手
当客户端收到连接同意的应答后,还要向服务端发送一个确认报文段,表示:服务端发来的连接同意应答已经成功收到。 
该报文段的头部为:ACK=1,seq=x+1,ack=y+1。 
客户端发完这个报文段后便进入ESTABLISHED状态,服务端收到这个应答后也进入ESTABLISHED状态,此时连接的建立完成!

五、TCP四次挥手
TCP连接的释放一共需要四步,因此称为『四次挥手』。 
我们知道,TCP连接是双向的,因此在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。
1)第一次挥手
若A认为数据发送完成,则它需要向B发送连接释放请求。该请求只有报文头,头中携带的主要参数为: 
FIN=1,seq=u。此时,A将进入FIN-WAIT-1状态。
PS1:FIN=1表示该报文段是一个连接释放请求。
PS2:seq=u,u-1是A向B发送的最后一个字节的序号。
2)第二次挥手
B收到连接释放请求后,会通知相应的应用程序,告诉它A向B这个方向的连接已经释放。此时B进入CLOSE-WAIT状态,并向A发送连接释放的应答,其报文头包含: 
ACK=1,seq=v,ack=u+1。
PS1:ACK=1:除TCP连接请求报文段以外,TCP通信过程中所有数据报的ACK都为1,表示应答。
PS2:seq=v,v-1是B向A发送的最后一个字节的序号。
PS3:ack=u+1表示希望收到从第u+1个字节开始的报文段,并且已经成功接收了前u个字节。
A收到该应答,进入FIN-WAIT-2状态,等待B发送连接释放请求。
第二次挥手完成后,A到B方向的连接已经释放,B不会再接收数据,A也不会再发送数据。但B到A方向的连接仍然存在,B可以继续向A发送数据。
3)第三次挥手
当B向A发完所有数据后,向A发送连接释放请求,请求头:FIN=1,ACK=1,seq=w,ack=u+1。B便进入LAST-ACK状态。
4)第四次挥手
A收到释放请求后,向B发送确认应答,此时A进入TIME-WAIT状态。该状态会持续2MSL时间,若该时间段内没有B的重发请求的话,就进入CLOSED状态,撤销TCB。当B收到确认应答后,也便进入CLOSED状态,撤销TCB。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值