1.传输层学习笔记

来自B站韩立刚老师的计算机网络课程

1.各层协议

协议
应用层http https、ftp、DNS、SMTP、PoP3、RDP
传输层TCP、UDP
网络层IP(RIP OSPF BGP) ICMP IGMP ARP

这里udp/tcp就是传输层的协议。

2.udp/tcp

协议场景、特点例子
TCP分段、编号、流量控制、建立会话下载视频、访问网站
UDP一个数据包就能完成数据通信,不建立会话、多播(一对多)浏览网页的解析域名、QQ消息、共享屏幕

3.应用层和传输层关系

传输层两个协议,上面有多个应用,用端口区分。
在这里插入图片描述

3.1 端口复用

http=TCP+80
https=TCP+443
ftp=TCP+21
SMTP=TCP+25
POP3=TCP+110
RDP=TCP+3389
共享文件夹=TCP+445
SQL=TCP+1433
MYSQL=TCP+3306
DNS=UDP+53 or TCP+53
登记端口号: 1024~49151
客户端端口号:49152~66535

如每访问一个网页都会建立至少一个会话,对应一个端口?

  • 查看自己计算机侦听的端口
    netstat -an
    在这里插入图片描述

  • 测试远程计算机打开的端口
    telnet xx.xx.xx.xx 21

  • 端口就代表服务,端口区分服务,比如可以测试一个计算机是否打开了远程服务端口

  • 只打开必要的端口,更改端口可增加服务器安全性

  • mstck 远程服务连接Microsoft terminal services client

  • windows防火墙不限制出去的流量,主动限制进来的流量。如远程控制时,,,木马程序是点个图片、链接啥的给本机装服务,主动连外边,防火墙控制不了,

window可以设置ipSec,本地策略控制特定ip进入,

  • msconfig 查看服务

4.UDP

运输协议数据
TCP 传送协议单元叫 报文段(segment)
UDP 传送协议单元叫 UDP报文用户数据报协议, user datagram protocal

UDP 传送据前不需要建立连接。对方的运输层在收到UDP报文后,不需要给出确认。不提供可靠交付,但某些情况下是最有效的工作方式。
TCP 提供面向连接的服务。TCP不提供广播或多播服务,提供了可靠、面向连接的运输服务,同时也增加了开销,不仅让协议数据头部增大很多,还占用了许多的处理机器资源。

4.1 报文

IP数据报=首部+数据
数据=首部+数据
首部=伪首部+源端口+目的端口+长度+校验和
伪首部=源ip地址+目的ip地址+0+17+UDP长度
校验和: 传输完要校验包数量
在这里插入图片描述

4.2 UDP为什么不可靠?
  • 不保证消息交付:不确认,不重传,无超时
  • 不保证交付顺序:不设置包序号,不重排,不会发生队首阻塞
  • 不跟踪连接状态: 不必建立连接或重启状态机
  • 不需要拥塞控制: 不内置客户端或网络反馈机制

5. TCP

transmission control protocol

5.1 特点
  • 面向连接的传输层协议;
  • 点对点,只能有两个端点
    • 端点不是主机,不是ip地址,不是进程,不是传输层协议端口。端点叫套接字(socket);
    • IP地址+端口号构成套接字;
  • 提供可靠交付的服务;
  • 提供全双工通信;
    • 同时发和收,发送的同时还得接收反馈;
  • 面向字节流;
    • 传输是以字节的形式;
    • 无边界性(udp有,发几次收几次)
  • 流量控制、拥塞控制(如下东西发的快收得慢,得控制)
5.2 如何实现可靠传输
5.2.1. 停止等待协议
  • 无差错情况
    在这里插入图片描述
  • 超时重传
    在这里插入图片描述
  • 确认丢失
    在这里插入图片描述
  • 确认迟到
    在这里插入图片描述

总结:依靠确认和重传机制,实现在不可靠的传输网络上实现可靠的通信,此可靠传输协议常称为自动重传请求ARQ(automatic repeat request)。此重传是自动的,发送方主动去重传。

5.2.2 超时重传时间选择

TCP每发送一个报文段,就对此报文段设置一个计时器。只要到了计时器重传时间没有收到确认,就要重传报文段。
在这里插入图片描述

5.2.3 改进

信道利用率
在这里插入图片描述
利用率:
在这里插入图片描述
传完就等确认,再传,那传输所占用的时间就挺低。
流水线传输
不等确认,连续发。
在这里插入图片描述
如何实现可靠传输?
连续ARQ
在这里插入图片描述
连续发完窗口中数据就等待确认,接收到1的确认,就右移,并从缓存删除1,依次。
若中间丢失了3,接收到的确认是2,则回复时设置sack重发3,之前接收到的4 5 保留,然后再发6以后的。

累计确认:不用每接收到一个就发送确认一次,而是累计收到n个包,确认长度为n,说明n以前的已经正确收到。

报文段格式
在这里插入图片描述

  • 确认号:下次发那个字节
  • 数据偏移:4位。TCP首部除去固定20字节,另外的长度不固定。用此记录TCP首部长度。一个位代表4个字节。
  • 保留:无用的。
  • urg:例如暂停的操作,到接受的缓存不排队
  • ACK:标记1则确认号有效性
  • syn:同步时用。syn=1说明是建立会话的包
    在这里插入图片描述
  • push:是接受的数据从缓存到应用程序的优先性,push=1就不排队。
  • rst: 重置连接标志位,TCP连接出现严重错误。如打开一个网页,等不急就把网页关了。
    fin:释放连接。

访问一个网站:首先dns域名解析(域名->IP),拿到网址用TCP建立连接,共三次握手(),然后http协议,发送请求get,然后网站到计算机的传输网页,计算机同时也有确认信息。
在这里插入图片描述
确认序号变化:
在这里插入图片描述

syn攻击:利用tcp的建立会话机制实行DOS攻击,以不存在的源地址向一计算机建立连接,攻击此计算机。
land攻击:目标地址和源地址都是计算机自己。

  • 窗口: 告诉对方自己的接收缓存窗口大小,对方设置相同大小的发送窗口。?
  • 校验和:首部和数据两部分长度。
  • 紧急指针:2个字节。urg=1时有效,指明紧急数据的尾部位置。
  • 选项:例如放mss,最大接收数据包的长度;是否选择性确认(丢包时)……
  • 填充:若数据不够4字节则填充。

可靠传输方式总结

  1. 以字节为单位的滑动窗口技术;
    在这里插入图片描述
5.3 如何实现流量控制

解决通信两端发送和处理速度不一致的问题。
在这里插入图片描述
随着接收的累积,可发送滑动窗越来越小。接收缓存窗口满了就转移到应用中,然后窗口又复原(若出现窗口复原的相应包丢失,发送的也不会一直等,而是也会有确认包过来测定窗口)。

5.4 如何实现拥塞控制

针对所有计算机。
在这里插入图片描述

5.4.1慢开始和拥塞避免算法(1983年)

传输窗口慢指数增长再线性增长。再降低门限,再来。
在这里插入图片描述
“拥塞避免”并非完全能避免拥塞
拥塞避免指再拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络不容易出现拥塞。

5.4.2 快重传和快恢复算法(1990年)

快重传:接收方没有按顺序接收到包可能就出现丢包了。如收到1 2 4,收到4时,默认5个包,原本得等收到5再回复重传,现在直接发3的请求包。
发送发一接收到3个连续的接收确认,就立刻计算新的拥塞门限,并执行快恢复。
快恢复:从拥塞窗口恢复

实际发送窗口的上限值
为接收方窗口和拥塞窗口两个中的较小值。也即步拥塞时,上限为接收方窗口,和前面说的对应上。

5.4.3 TCP传输连接管理

传输连接又三个阶段:建立连接数据传输连接释放
TCP连接的建立都是客户服务器方式;
客户:主动发起连接建立的应用进程;
服务器:被动等待建立连接的应用进程;

  • 三次握手
    1.客户端发同步数据包。同步标记SYN=1,确认标记ACK=0,序号seq=x;
    2.服务器知道SYN=1,ACK=0说明它是一个主动建立连接的数据包,并发过去一个包,SYN=1,ACK=1,数据长度seq=y,确认号ack=x+1;
    3.客户段后到后再发一个包,SYN=0,ACK=1,seq=x+1,ack=y+1;
    在这里插入图片描述
    为什么是三次不是两次
    如果两次握手A发给B的建立连接包去得慢,导致A超时重传并很快收到回复,在AB建立连接结束后B释放了资源。此时收到之前发得慢的建立连接得到,那B就直接认为建立连接而A却根本不会向它发数据,导致B的资源被占耗。总之就是防止无效包导致的无效连接建立占耗服务器资源。
    为什么不是四次
    四次握手主要是B第二步发送确认标志ACK=1,ack=x+1,加第三步SYN=1,seq=y,而这两步实际可以一步完成。

状态变化
在这里插入图片描述

TCP的连接释放
在这里插入图片描述
TIME_WAIT:等4分钟,防止最后A->B的回复包丢失,B关不掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值