初见HCIA——入门篇 学习笔记(三)(TCP和UDP)

系列文章目录

系列文章目录

初见HCIA——入门篇 学习笔记(一)(网络基本概念).
初见HCIA——入门篇 学习笔记(二)(ICMP和ARP).
初见HCIA——入门篇 学习笔记(三)(TCP和UDP).
初见HCIA——入门篇 (VRP 补充篇).
初见HCIA——入门篇 学习笔记(四)(静态、RIP、OSPF).
初见HCIA——入门篇 学习笔记(五)(DHCP和FTP传输).
初见HCIA——入门篇 学习笔记(六)(VLAN及三层交换机).
初见HCIA——入门篇 学习笔记(七)(链路聚合和 NAT(acl)地址转换).


学习是不断重复的过程,没有什么知识是一开始就能记住的,只有不断的重复不断的复习之前的内容,才能真正的理解和掌握。


前言

通过前两篇的学习,主要掌握了物理层,数据链路层,网络层的基本结构和协议,下面来总结一下关于传输层的核心内容。


一、传输层的两大协议

1.传输层

传输层:传输层是整个网络体系结构中的关键层次之一,主要负责向两个主机中进程之间的通信提供服务。是一种端到端,建立主机之间程序的通信。

通过Socket,中转函数,放在指定的位置

2.TCP

TCP 是一种可靠有序的服务、对流量控制和拥塞控制、但负载大(封装的多),处理复杂,速度慢等特点。

1.TCP中的端口

  1. ftp(21/20)
  2. HTTP(80)
  3. Telnet(23)
  4. SMTP(25)
  5. 远程桌面(3389)

2.TCP的头部

TCP头部
Checksum:进行校验,并还原,TCP是一种面向连接的协议

3.TCP的三次握手

三次握手要掌握三次握手,首先要知道头部中关键位置的含义。在握手中主要是标志位 SYN(发出握手请求 1 代表有需求),ACK(表示校验和,将收到的内容+1),Seq=X(序列号)。

所以整个流程如下。
1.发送端 发 SYN=1(目前理解是,发送一个连接请求) 并且 发送Seq。
2.接收端 发 SYN=1 (此时双方连接成功)且发送 ACK=X+1 Seq=Y。
3.发送端 发 ACK=Y+1 Seq=Z。

注:发送时
1.SYN,只有前两次发。
2.Seq,每一次都发,自己的序列号是一定要发的,内容是Seq。
3.ACK,除了第一次没有(因为此时我没有接收端的数据),此后ACK就是校验位,确认收到信息,之后每一次都有。

4.滑动窗口机制

滑动窗口机制:Windows值可以改变,目的是为了避免拥塞。
窗口滑动
滑动窗口协议:基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。

在TCP头部的Windows是可以改变的,就引出了一个算法。目的是为了快速找到可以传输的最大值。
首先理解两个概念。拥塞和流量控制的区别:
拥塞:是一种被动的行为,服务器端,确认的窗口值大,但是确认收到的数据小于窗口值,不一样
流量控制:是收到后,服务器端主动调小窗口值,确认的窗口值和收到的大小一样

① 慢开始 ②拥塞避免 ③快重传 ④快恢复

拥塞控制:基于窗口的拥塞控制,发送方维持一个叫做拥塞窗口cwnd。发送方让自己的发送窗口等于拥塞窗口。
慢开始:在开始发送数据的时候,由于不清楚网络的负荷情况,由小到大逐渐增加拥塞窗口的数值。为了防止拥塞窗口cwnd增长过快引起网络拥堵,还要设置一个快开始门限状态变量,ssthresh(快开始门限)。开始试探缓慢开始指数增长

慢开始门限:
当cwnd<ssthresh时,使用上述的慢开始算法。
当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。
当cwnd=ssthersh时,既可以使用慢开始算法,也可以改用拥塞避免算法。
拥塞避免算法:让拥塞窗口cwnd缓慢的增大,每次经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1。

快重传算法:让发送方尽量知道发生了个别报文段的丢失,快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认。(接收方收到了M1和M2后都分别及时发出了确认,假设接收方没有收到M3但是却收到了M4,本来接收方可以什么都不做,但按照快重传算法,必须立即发送对M2的重复确认,让发送方知道****接收方没有收到M3,发送方一连收到3个重复确认,就知道接收方确实没有收到,应该立刻重传)。

快恢复:在发送方知道现在只是丢失了个别的符文段,于是不启动慢开始,而是执行快恢复算法。不把窗口置为1,置为当前ssthersh的一半

5. TCP的四次断开

四次断开
四次断开和三次握手类似,FIN表示要断开。
1.发送方,发FIN=1(X),以及之前Y 的数据+1的ACK。
2.接收方, 发ACK=X+1。
3.接收方,发FIN=1(Y),ACK=X+1。
4.发送方,发ACK=Y+1。
类似于三次握手,只不过中间的ACK确认了两次

3.UDP

UDP: 不可靠无序,但是负载小,处理简单,速度快面向无连接的协议,没有握手,没有断开。

  1. QQ (OCIQ)

  2. Google (QUIC)

下图为UDP的头部

udp头部
端口功能,提供三层透传。

在UDP协议层次模型中,UDP位于IP层之上。应用程序访问UDP层然后使用IP层传送数据报。IP数据包的数据部分即为UDP数据报。

IP层的报头指明了源主机和目的主机地址,而UDP层的报头指明了主机上的源端口和目的端口。UDP传输的段(segment)有8个字节的报头和有效载荷字段构成。

UDP报头由4个域组成,其中每个域各占用2个字节,具体包括源端口号、目标端口号、数据报长度、校验值。


二、数据传输的过程

数据是如何从一个应用程序中,通过多级的网络到达另一个应用程序中呢?

下面简单总结一下,整个的流程,并对之前学过的整体进行复习和回顾。

1.Socket的关键作用

数据大部分是由应用的程序产生的,不同的程序产生的数据不同。数据产生后,会暂时存放在缓存中。
他就像一个码头的搬运工,将对应的数据放到对应的端口中,再由传输层对其进行封装。

目标端口往往是确定的,原端口会随机寻找一个空闲的端口,进行封装。

2.各层封装

每一层都会在数据产生后,对其进行相应层特点的封装。

  1. 传输层,进行TCP和UDP的封装,封装的内容是对应的端口号。
  2. 网络层,进行IP的封装,SIP和DIP 的封装。
  3. 数据链路层,进行的是以太网帧的封装,内容主要是SMAC和DMAC。
    关于如何寻找DMAC,请见 初见HCIA——入门篇
    学习笔记(二)
    .中的内容。
  4. 物理层,时进行比特流的转化,将输入的数据一级一级的转换成帧数据,用电信号的方式传输出去。

3.网络传输

通过各种的交换机和路由器,将数据进行传输。

其中,交换机存储的是通过DMAC来寻找对应的接口,而路由器中的表示查找DIP对应的接口,来进行传输工作。

4.目的地

经过一系列的跳转,最终到达目标地址,也是对比特流进行数据的还原。拆除比特帧,网络层和传输层对应的封装,最后通过Scoket,将数据传输到对应的应用程序中去。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Le`soleil

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

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

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

打赏作者

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

抵扣说明:

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

余额充值