计算机网络-第五章之传输层
发布日期:2021-09-12 09:58:03 浏览次数:45 分类:技术文章

本文共 3572 字,大约阅读时间需要 11 分钟。

文章目录

传输层

一、传输层协议UDP和TCP

下面的TCP/IP协议栈要背上。

在这里插入图片描述
在这里插入图片描述

1、TCP

网络层不保证数据的可靠传输,路由器处理不完就扔。

在传送的数据很大的时候,需要进行分包,传送过程中可能出现丢包现象。
TCP需要将要传输的文件分段传输,客户端和服务器之间要保持一个会话, 为什么要保持会话,客户端服务端要记着发了几个数据包还有几个没有发,并且丢了之后还要让服务器重新传,会话直到数据传输完成。

TCP协议什么时候需要

需要将要传输的文件分段传输的时候,TCP协议要建立会话,实现可靠传输(丢包会让重新传送)、流量控制。

  • netstat -n 查看建立了哪些会话,在这里不会看到UDP,因为UDP不需要建立会话。
  • 查看建立会话的进程 netstat -nb

2、UDP

UDP:一个数据包就能够完成数据通信,在传输之前不需要建立会话,也不需要流量控制,不可靠传输。

域名解析、QQ聊天(一般用的也是UDP,发送失败多发两次)用的就是UDP,如果失败再发一次。
还有一种也用UDP:屏幕广播 这种情况下,一个数据包完成不了也用UDP,因为不需要保证数据传输的可靠性。

二、传输层协议和应用层协议之间的关系

在这里插入图片描述

TCP+3389表示远程桌面使用的RDP协议

TCP+21端口表示FTP协议…
说明TCP协议 + 一个端口就能表示一个应用层协议。
同理:
UDP协议 + 一个端口也可以标识一个应用层协议。

1、常用的应用层协议使用的端口

http = TCP+80

https = TCP+443
RDP = TCP+3389
ftp = TCP+21
共享文件夹 = TCP+445
SMTP = TCP+25 :发邮件
POP3=TCP+110 :收邮件
telnet = TCP+23
SQL=TCP+1433
DNS=UDP+53

2、服务和应用层协议之间的关系

服务使用TCP或者UDP的端口侦听客户端请求。

客户端使用IP地址定位服务器,使用目标端口定位服务。
可以在服务器网卡上设置只开放必要的端口,实现服务器的网络安全。

我们可以在计算机上安装很多服务,安装web服务,她就是一个web端点, 安装邮件服务就可以收发电子邮件。

服务会侦听端口号,服务在启动状态才帧听请求。

在这里插入图片描述

3、如何查看侦听的端口

nestat -an 查看侦听的端口

netstat -n:用来查看建立的会话
netstat -nb:查看建立会话的进程
telnet ip地址 端口号:测试到远程计算机某个端口是否打开

4、如何更改服务使用默认端口

可以迷惑入侵者,使得系统更加安全。

5、如何设置windows网络安全

设置本地连接,TCP/IP筛选。

三、传输层功能

传输层为相互通信的应用进程提供了逻辑通信

IP协议提供的就是如何把数据包从这个地址转到那个地址。
传输层是如何让我这个应用程序找到那个计算机上的应用程序。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、传输层的端口

在网络层,用协议号来标识数据是TCP还是UDP的,TCP的协议号是6,UDP的协议号是 17,IGMP协议号是1。

如下图,每一层都有方法来标识上一层,网络层用协议号标识上一层,传输层用端口号来标识上一层。

在这里插入图片描述

TCP的端口

端口用一个16位端口号来进行标志。

端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程,因特网中不同计算机的相同端口号是没有联系的。

端口取值0-65535

熟知端口:0-1023
登记端口:1024-49151 RDP:3389(后面开发程序的可以注册这个范围的端口)
客户端口号:49152-65535

2、UDP特点

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
长度指的是UDP用户数据报长度,包括首部+数据
在传输层的检验和需要网络层的12字节的伪首部的信息进行计算的。
在这里插入图片描述

3、传输控制协议TCP

在这里插入图片描述

TCP全双工通信表示既要发也要收,因为发的同时也要接收确认消息。

TCP在进行正式通信之前要进行三次握手。

在这里插入图片描述

端口号拼接IP地址就构成了套接字
在这里插入图片描述

可靠传输的工作原理----停止等待协议

在这里插入图片描述

上面是建立连接之后,如何保证可靠传输(而不是三次握手),即通过停止等待协议,发过去后你不给我回应,我就不发下一个。

确认丢失和确认迟到

在这里插入图片描述

收到迟到的确认让发M2,但是M2已经发过了,所以什么都不做。

ARQ协议

在这里插入图片描述

在这里插入图片描述
从上图可以看出,大部分时间都在等,

在这里插入图片描述

连续ARQ协议

在这里插入图片描述

在这里插入图片描述

滑动窗口里面可以一次性全都发出去,收到一个确认,滑动窗口往后面移动一个。

累计确认

在这里插入图片描述

确认收到3的话,表示前面的1、2、3都已经收到了。

4、TCP报文段的首部格式

在这里插入图片描述

应用程序要传文件的时候,这些文件在要传之前,需要把这些要传的数据放到缓存里面,然后传输层把放入缓存的数据进行分段变成数据包,分段之后,这些数据加上TCP的首部,才能完成封装。

TCP首部有20字节固定的首部

  • 序号:数据部分的第一个字节为整个文件的第几个字节。
  • 确认号:确认号是计算机返回的,让发送数据的计算机该发第多少字节开始的数据包。
  • 数据偏移:因为TCP首部长度不是固定的,数据偏移就是用来记录TCP报文段从多少字节后面开始就是数据了。数据偏移占4位,最大表示的数是15,这里面一个1表示4个字节,所以首部最长是60字节。
  • 保留:没什么用。
  • URG:用来告诉计算机这个报文段里面的数据是否要优先传,是否按缓存顺序。
  • ACK:如果是0,则确认号无效,如果是1,确认号才有效。
  • SYN:同步的时候要用到,
  • PSH:取值为1的话,到了目的地可以优先给应用程序,和URG对比着看。
  • RST:取值为1的话,表示TCP会话出现了严重的错误,必须要释放连接。
  • FIN:数据传完了FIN设置为1,释放连接。
  • 窗口:设置缓存为多大。
  • 校验和: 要在TCP首部加上12字节伪首部进行计算。
  • 紧急指针:URG为1的时候,紧急指针才起作用,表示数据包数据部分里面前面多少字节是紧急的。
  • 选项可以设置最大数据报长度为多大。

在这里插入图片描述

确认号:期望对方下一次从第多少数据开始发

序号:自己发送的是自己从第多少字节开始发的。

  • ACK:如果是0,则确认号无效,如果是1,确认号才有效。
  • SYN:同步的时候要用到。

建立通讯的时候:

  • xp发给web服务器建立请求时:syn=1,因为刚建立会话,确认号是对以前接收数据的确认,现在还没有接收数据,则ACK=0。序号=0,确认号=0。

web同意建立会话:

  • 确认号=1(表示希望下面收到的是第一个字节),此时ACK设置为1:ACK=1,序号为0。

以后发的syn就不等于1了,会话同步信息已经建立了,syn就等于0了。

在这里插入图片描述

MSS:最大支持数据包。
WIN:缓存为多大,比如如果你给我发了这么大的话,我还没有确认,你就先暂停。因为TCP协议收到的字节六都要放到缓存里面。

使用syn同步进行攻击

伪造不存在的地址:不断的对目标计算机发建立会话请求的消息,但是请求地址是一个不存在的机器,一直不断的发这种建立会话的消息。

目标地址和源地址一样:或者让建立会话的地址和目标地址相同。

四、TCP如何保证可靠传输

1、以字节为单位的滑动窗口技术

A的接收窗口由B的接收窗口决定的。再没收到接收的计算机确认之前,发送窗口里面的数据是不允许删的。

在这里插入图片描述

在这里插入图片描述
原来10ms,现在网速好点了变成8ms,那么旧的RTTs=10ms,新的RTT样本=8ms。

四、TCP协议如何实现流量控制

在发送和接收过程中,接收端可以设置滑动窗口大小,发送端也跟着调整, 处理不过来的时候,可以调小。

五、TCP的拥塞控制

上面说的流量控制是A和B来控制传数据的速度,比如A处理不过来了,让B蛮点发,和网络堵不堵没关系。

拥塞是全局性的,不是两个计算机造成的。

在这里插入图片描述

在这里插入图片描述

可以把路由器想成计算机,如果处理的东西太多,处理不过来,就会造成死机…

慢开始

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
新的慢开始门限为丢包时候的一半。

在这里插入图片描述

快重传

在这里插入图片描述

快重传:一旦收到的没按照顺序,就立刻让计算机重传。

快恢复

快恢复,遇到拥塞丢包,连续发三个确认,如果收到,窗口不会退到1再上升,上升方式如图。

在这里插入图片描述
在这里插入图片描述

六、TCP的传输连接管理

在这里插入图片描述

1、三次握手

在这里插入图片描述

ACK:确认标记
ack:确认号

为什么要有第三次的客户端向服务端发送数据:

会出现这样一个现象:

  • 比如A发送给服务器B一个数据,先发了一次请求建立连接,过了没收到B的响应,A又发了一次建立连接,B立刻响应,过了一会B响应了第一次建立连接请求,如果是两次握手的话,那么第二次连接请求A会拒绝,但是B会一直等待A发送数据,消耗B的资源。如果三次确认的话,不会出现这个问题,因为只有一个会第三次确认,有一个则等了一会就释放了连接。

在这里插入图片描述

在这里插入图片描述

上面的两边状态也要背上。

七、TCP的连接释放

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

time-wait是防止B给A的确认A没收到,当B再发的时候,A可以给它回应。
上面的状态也要背上。

转载地址:https://blog.csdn.net/weixin_38367817/article/details/104219419 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:计算机网络-第六章之应用层
下一篇:计算机网络-第四章之网络层

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月17日 07时50分03秒