计算机网络学习笔记(5.传输层 6.应用层)

第五章 传输层

传输层概述

研究进程之间的逻辑通信问题在这里插入图片描述
传输层

  • 主机才有的层次
  • 网络层的首部校验和只能校验头部,不能校验数据部分,传输层可以实现数据的检错,这样就不需要网络层再检测数据部分了

在这里插入图片描述
传输层的两个协议
在这里插入图片描述
传输层的寻址与端口

  • 这里的端口是软件端口/逻辑端口,标识主机进程,与路由器的硬件端口不同
  • 端口号只需要在主机内有唯一性即可,不同主机之间的端口没有联系

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

UDP协议

用户数据报协议UDP概述

  • UDP不保证可靠交付,靠网络层实现可靠交付
  • UDP面向报文是指,UDP对于应用层传下的报文,既不合并也不拆分,对报文的长度不改变,保留应用报文的边界,
  • 因此需要应用层选择合适的报文长度,否则就会导致报文传输到网络层过长,需要分片,降低传输效率;
  • 无连接,不可靠,面向报文,适合实时,首部开销小

在这里插入图片描述
UDP首部格式

  • UDP的数据已经进入到主机了,因此也就不需要地址了,靠端口号来识别进程
  • 源端口号可有可无,需要回复就给,不需要回复就不给,目的端口号必须有
  • 16位UDP长度指整个UDP数据报长度(首部+数据),单位字节
  • 16位UDP检验和检测整个UDP数据报是否有错,错就丢弃,分用时找不到目的端口号,也会对其报文,并发送ICMP差错报告报文

在这里插入图片描述
UDP校验

  • 图中的UDP数据报的首部开头又多了个伪首部,这个伪首部很像IP数据报的首部
  • 伪首部只会在计算校验和时才会出现,不向下传递也不向上提交
  • 伪首部:
    • 第三个字段固定为0,
    • 第四个字段表示协议,封装这个UDP报文的IP数据报的首部协议字段是17,所以这里也是17
    • 第五个字段UDP长度,是UDP首部+数据部分的长度,不包括伪首部

在这里插入图片描述
注意:接收端中的检验和是经过计算后的检验和
在这里插入图片描述

TCP协议特点和TCP报文段格式

TCP协议特点

  • 1.面向连接(虚连接):虚连接指这并不是实际的物理连接,实际的物理连接应该是层层封装解封装,TCP连接就好像是进程和进程直接连接了一样(疑问,难道TCP协议不是层层封装通信的??)
  • 2.只能点对点,无法广播和多播
  • 3.可靠有序,不丢不重
  • 4.全双工,收发都有缓存
  • 5.面向字节流

在这里插入图片描述
TCP发送数据举例

  • 发送方将要发送文件,会将发送的数据按照字节排好序,并进行编号
  • 将要发送的时候,提前把发送的字节放入TCP的缓存中,
  • 发送数据时,从缓存中按顺序取出一定的字节数,加上TCP首部,形成完整报文段发送出去

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

  • 考试重点,答题中经常考察对某些字段的理解
  • TCP报文段主要包含:首部,数据部分
  • 首部包含:固定首部,选项,填充(凑4字节的整数倍,填全0)
    • 源端口,目的端口,即字面意思
    • 序号:将要发送的字节都有自己的编号(123456789…),序号字段填的就是当前的TCP报文中数据部分的第一个字节的编号,比如上图中的首部中序号字段填的就是1,如果发送456号数据,序号字段就是4
    • 确认号:接收方收到了123号字节,并且知道下一个字节应该是编号4,所以回复的报文中,确认字段为4,表示期望收到4号字节
    • 数据偏移:TCP报文段的数据起始处距离整个TCP报文段的起始处的距离,一个数代表4B,其实就是首部的长度,比如这里的数值为15,则表示首部的长度为60字节;为什么还要添加首部长度,可能还会有选项字段和填充字段,所以首部长度不确定
    • 6个控制位:PSH和RST几乎不会考,了解即可
    • 窗口:B给A发送数据,并且在窗口字段规定了B最大能接收的数据量,A收到报文以后,知道了下次给B发送数据不要超过B的最大接收量;比如,B给A发送的确认为701,窗口为1000,那么A下次就可以给B发送701-1700号字节
    • 检验和:与UDP一样,检验首部+数据,检验时加上12字节的伪首部,伪首部的第四个字段是协议字段,UDP协议中是17,TCP协议中是6
    • 紧急指针:URG=1时才有意义,表示从TCP数据部分的开头向后有多少字节是紧急的数据,其实就是标记了紧急数据在数据部分中的位置和字节数
    • 选项:最开始是用于记录TCP报文字段中数据部分的最大长度,后来又加了几个字段,所以选项的长度也不确定,如果不满首部字节数为4的整数倍,还需要填充字段补充一下,了解即可

在这里插入图片描述

TCP连接管理

TCP连接三次握手,TCP断开连接四次握手

TCP连接传输三个阶段

  • 采用客户服务器方式,不论是客户还是服务器,都可以接收数据发送数据
  • 连接建立过程就是熟知的三次握手

在这里插入图片描述
TCP的连接建立

  • 考试重点考察三次握手过程中报文段中重要字段的数值
  • A想要和B通信
    • A发送请求报文:SYN=1表示这是连接请求,seq=x是首部的序号字段,因为没有数据部分,所以x是随机产生的,ack是确认号,此时无效,因为上一步没有收到报文,无需期待
    • B返回确认报文:B开始分配缓存和变量;SYN=1表示这是连接响应,ack=x+1表示确认,并期待收到x+1(其实本来也没有收到数据只是延续+1而已),由于B不返回数据,也随机发了seq=y,建立连接后ACK=1一直存在
    • A对B的确认进行确认:A开始分配缓存和变量,SYN=0除了连接请求和响应其他时间都是0,ACK=1,seq=x
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值