计算机网络-传输层简述

运输层:向应用层提供通信服务

常见端口号:

FTP:文件传输协议,使用端口号21(用于连接)和20(用于传输数据)

TELNET:远程登录协议,使用端口号23

SMTP:电子邮件传输协议,使用端口号25(用于发送邮件)

POP3:邮局协议版本3,使用端口号110(用于接收邮件)

DNS:域名系统,使用端口号53(一个域名可以对应多个ip,一个ip只能绑定一个域名)

TFTP:简单文件传输协议,使用端口号69(使用UDP不可靠传输,但效率高)

HTTP:超文本传输协议,使用端口号80

SNMP:简单网络管理协议,使用端口号161

HTTPS:超文本传输安全协议,使用端口号443(相比于HTTP更安全)

分类:

服务器端使用的端口号:1-1023,表示常规的服务进程

登记端口号:1024-49151,表示没有熟知的服务进程

客户端使用的端口号:49152-65535

协议:

TCP传输控制协议

  • 确认号:期望收到下一个对方的报文段的第一个数据字节的序号
  • 数据偏移:类似于偏移量,以4字节为单位
  • 序号:每一个字节的序号
  • 确认ACK:只有当ACK=1时,确认号有效
  • 窗口:告诉发送方允许发送的数据量
  • 同步SYN:建立时用来同步序号,SYN= 1表示这是一个连接请求或连接接受请求
  • 终止FIN:FIN=1,表明报文已发送完毕,要求接收方释放连接

  • TCP 虽然是面向字节流,但 TCP 传送的数据单元却是报文段。
  • 一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。
  • TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项(n 是整数)。因此 TCP 首部的最小长度是 20 字节。

套接字:通信两端的端点(IP地址: 端口号)

可靠传输具体实现

1.以字节为单位的滑动窗口

  • 现假定 A 收到了 B 发来的确认报文段,其中窗口是 20 字节,而确认号是 31(这表明 B 期望收到的下一个序号是 31,而序号 30为止的数据已经收到了)。
  • 根据这两个数据,A 就构造出自己的发送窗口
  • 发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
  • 连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

2.超时重传ARQ

3.选择确认SACK:接收方接收数据,返回其确认号

特点:

  • TCP连接的每一端都必须设置两个窗口——一个发送窗口和一个接收窗口。
  • TCP的可靠传输机制用字节的序号进行控制。TCP所有的确认都是基于序号而不是基于报文段。
  • TCP两端的四个窗口经常处于动态变化之中。
  • TCP连接的往返时间RTT也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。

可靠传输工作原理:

停止等待协议: 发送完一个分组后就停止发送,等待确认后继续。

  • 接收方无论是检测分组出现差错还是丢死,均不会响应。 解决办法:自动重传请求ARQ

连续ARQ协议:连续ARQ允许发送方在接收到所有之前数据的确认之前,连续发送多个数据包。这意味着发送方可以维持一个窗口,窗口内的数据包都可以连续发送出去,而不需要等待每一个数据包的单独确认。

流量控制与拥塞控制差异:

拥塞控制:防止过多数据注入网络,导致过载,全局性的

流量控制:点对点通信的控制,端到端的问题

流量控制:

使发送方的的发送速率不要太快,让接收方来得及接受

实现:通过滑动窗口实现,TCP数据的窗口字段数据。为了避免窗口数据丢失,TCP每个连接设有持续计时器(当一方发送完数据后,或者接收完数据后,启动计时器)

拥塞控制:

拥塞是 对资源的需求>可用资源

拥塞控制方式:

1.慢开始:由小到大逐渐增大注入到网络中的数据字节(由小到大增大拥塞窗口)

  • cwnd每次增加量 = min(确认报文段所确认的字节数,SMSS发送端最大发送报文数)
  • cwnd变化规律为1,2,4,8....

2.拥塞避免:使cwnd缓慢增大(线性增长)

3.快重传:使发送方尽早得知个别报文段的丢失。

  • 接收方不等待发送数据才确认,而是立即发送确认,即使收到失序的报文段也要立即发送重复确认
  • 发送方一旦收到三个重复确认,就立即重传

4.快恢复:

图示:

运输连接的三个阶段:

建立连接

数据传送

释放连接

建立连接(三次握手)

服务器端进入监听状态,客户端发送连接建立请求报文(SYN报文段,不携带数据。SYN=1,选择一个初始序号seq = x),进入 同步已发送状态。

服务器发送确认报文段(SYN=1,ACK=1,确认号ack = x+1,序号seq为y),进入同步收到状态

客户端发送确认(ACK=1,ack=y+1,seq =x+1 )

客户端为什么需要第三次请求?

为了避免请求连接报文阻塞,服务端延迟一段时间后接受到。使服务端以为已经建立连接,而处于监听状态,浪费资源

释放连接(四次挥手)

客户端发送连接释放报文(FIN=1,sql=u=前面发送最后一个字节序号+1),等待服务端确认。

服务端发出确认(ack=u+1,seq=v=前面发送最后一个字节序号+1)。

  • 客户端到服务器方向连接释放,TCP处于半关闭状态。

服务端关闭连接同上

当服务器端发送确认后,进入时间等待状态,经过时间等待计时器 设置的时间2MSL(最长报文段寿命),后释放。为了避免确认丢失使失效的连接请求报文消失

UDP用户数据协议

只在IP数据报服务上添加了复用,分用,差错检测的功能(复用是指报文打包发送)

对比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值