TCP IP Protocol suite(TCP/IP协议栈)

TCP IP Protocol suite 1

OSI 七层参考模型

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

TCP/IP Model(套件、协议栈)

  • 协议栈中有很多协议,其中最常见也最重要的是传输层的TCP、UDP、IPimage-20230917180749761

Mailing System(邮件系统)

数据就像邮件系统的邮票一样,有寄件地址和收件地址,由大的区域慢慢缩小范围,最终将包裹精准的送到收件人手里。
就像网络一样,IP就相当于是大范围,包裹相当于数据,快递员相当于路由器,将一个包裹从这边送到那一边。

Procol Suite

传输层有两个协议

  1. TCP可靠传输协议
  2. UDP不可靠传输协议
    这两种协议都是由程序员根据应用而选择传输方式;接下俩会选择地址发送(IP);产生地址后就需要看地图,路由器会产生地图(路由表);从哪里来去哪里,做决定的是二层协议Mac地址.

Data Encapsulation(数据封装)

image-20230917182517313

数据封装过程

  1. 首先应用层产生数据,数据就就相当于包裹
  2. 选择可靠或不可靠的协议,也就是选择可靠的快递公司

数据封装到这里是数据段(Segment)

  1. 把数据发送给那个地址,相当于快递的地址栏,里面写着寄件地址和收件地址。

数据封装到这里是数据包(Packet)

  1. 有了IP地址后决定目的地走那条路

数据到了这里是数据帧(Frame)

  1. 最后数据将转化为二进制进行传输,相当于快递中送包裹选择什么方式

数据到这这里是比特流(bits)

TCP IP Protocol suite 2

Telnet

一前的一种远程登陆协议,现在基本上不用了,因为Telnet远程登陆是明文传输,没有加密不安全,很容易被黑客盗取数据。

SSH

后来远程登陆升级了,这种协议抓包无法可看到密码。

FTP (File transfer Protocol)与 TFTP

这两种文件传输协议的区别。

  • FTP可以走dir命令,并且可以查看文件目录,并可以做出修改
  • TFTP不能看目录,必须知道文件名。

DNS Domain Namespace (DNS域名解析)

image-20230917190133361

域名的分类

  • 域名由根域名 (Root Domain)
  • 顶级或一级域名(TOP-Level Domanin)
  • 二级域名 (Second-Lever Domain)

世界上总共有13根服务器,12个独立机构管理

域名的作用:

  1. 解析主机名
  2. 记录域名与IP之间的关系 域名解析IP

例:45.113.192.102-----www.baidu.com

  1. IP解析回域名

DNS工作方式

  1. 访问网站时电脑并不知道百度服务器在哪里
  2. 电脑该如何通过域名找到服务器的IP?
  3. 通过域名解析,解析域名然后反馈IP地址
  4. 其实浏览器是通过解析后的IP地址访问服务器(并不是域名)

DNS Recursive VS Iterative Query(DNS 递归与迭代查询)

image-20230917205708907

递归

  1. 先询问DNS,DNS在本地(配置在电脑上)
  2. 电脑会把DNS的询问发送给这个服务器
  3. 本地查询不到,会像上级反映(根服务器),根服务器这边会知道这些顶级域名是什么
  4. 根域名会帮自己去问这个域名对应的IP地址是多少,顶级域名会一步一步返回给自己。

迭代

  1. 先询问DNS,如果本地DNS不知道,则会让你去访问其他DNS服务器或根服务器,会告诉你访问哪个网站。

递归和迭代一起使用
用户访问一个网站请求DNS,如果不知道,会直接访问DNS服务器,DNS服务器会访问向根域名或者顶级域名并返回对应的域名解析IP

在此期间开始使用了递归方式,请求了这个DNS也返回了DNS解析后的IP,现在DNS服务器做的是一个迭代工作,因为DNS服务器向每一个顶级域名或根域名请求。原本解析工作像长蛇一样,一次域名解析需要多次访问,但现在你只需要访问NDS服务器,DNS服务器会迭代帮你访问,最后将解析后的IP告诉你。

Boot / DHCP / APIPA

1. 客户端先DHCP请求IP地址的过程

  • 主机首先会说我没有地址,再然后发送广播请求IP地址 Discover(发现)
  • DHCP服务器会说给你这个地址怎么样单播 ** Offer(给予)**
  • 如果客户端确认使用这个IP地址,则客户端会发送广播请求这个地址 Request(请求)
  • DHCP服务器收到后会以单播发送确认 ACK(确认)
  • 现在客户端就已经成功获取地址了

2. DHCP的4种报文

  1. DHCP Discover 发现 广播
  2. DHCP Offer 给予 单播
  3. DHCP Request 请求 广播
  4. DHCP ACK 确认 单播

3. 微软API

当用两台设备的DHCP服务器不可用时,会自动配置地址 会随机产生两个169.154.0.1-169.254.255.254,使用这个地址池的地址作为紧急通讯

TCP IP Protocol suite 3

Layered System Review(系统分层审查)

TCP与UDP的端口号不是通用的

  • TCP端口起始:0~65535
  • UDP端口起始:0~65535

TCP/UDP Port Number(端口号分类)

  • 0~1024 well-Known(知名端口号)
  • 1024~49151 registered Port(注册端口号)
  • 49152~65535 dynamic or Private(私有端口号)

自己电脑上使用的是私有端口号,一些著名的协议上使用的是著名端口号;例如:HTTP服务器就对应TCP端口号80,DNS服务器的UDP端口号是53,SMTP邮件使用的是TCP的25端口

NIC, Ethernet Type, Protocol Number(网卡/以太网类型、协议号)

image-20230920122853074

TCP/IP分为四层,分别是数据链路层、网络层、传输层、应用层

  • 首先应用层产生数据,知名端口号对应着应用,如果是是一个FTP应用那么他一定对应着知名TCP端口号21,有时候我们看到TCP的21的端口号就知道他是一个FTP

  • 在传输层里如果协议号是6那么他就是TCP协议,如果协议号是17那么他就是UDP协议

  • 在网络层里协议号OSPF对应协议号89 EIGRP对应协议号88,我们从网络层里发现协议号就可以判断这是一个什么IP协议

  • 在数据链路层里包含着以太网类型是什么:0x0800是IPV4 0x86DD是IPV6 ,在数据链路层里我们可以通过0x800判断这是一个IPv4

  • 通过以太网类型我们可以知道对应的物理介质是什么,0x86DD IPV6对应着物理介质光纤

不同层之间通过Next Heander(数据头部)来判断下一步应该将数据发给哪一个协议或者应用

Host to Host Communication

image-20230920130549057
模拟左边的主机要给右边的主机发送数据,假设这是FTP的客户端,右边是一个Server

  • 首先会产生数据,然后往下传递
  • 因为是FTP协议,这是一个知名端口号,因为FTP对应着TCP协议21,所以会在数据包前面加上一个21
  • 21所对应的是TCP协议,如果向下传递也就是往第三层传输的时候,就会在IP Header里面加上6,代表我是从TCP协议来的
  • 数据包到达网络层,这时候就会下我的源地址和目标地址,会通过路由协议查看地图,看看自己是否能够到达Server这里,如果有就会向下传递,ARP这里会做一个转换 也就是将IP address 对应 MAC Address
  • 数据到达二层就会在前面加一个MAC address 如果是IPV4下来的就会在Ethernet Type中写上0X800,因为二层使用的是Ethernet Type 所以发送给一层的时候就会选择一个网卡,网卡是专门给以太网传输用的.
  • 然后就会变成10010101二进制的bit传输

二进制数据到达了路由器

  • 二进制数据到达路由器1层,就会向上传递到2层以太网协议,以太网会向上传递到3层IP协议,会根据路由协议产生的地图 和 三层数据包IP地址的目的的地址进行一个查看,检查一下目的地是否可达,如果可达会把数据包一直向下转发,通过右边接口转发出去。

  • 接下来数据包就会来到右边的主机,右边系统看到你是从以太网网卡,所以会把数据包发给2层的以太网协议。

  • 2层以太网协议看到数据包报头是0x800就会把数据包转发给IPV4

  • IPV4会看IP Header中的Protocol Number是几,如果是6就代表这个数据是给TCP的,然后就会发送给传输层

  • 传输层收到数据后,就会产看TCP Header 中的Protocol Number ,如果是21就代表这个数据包要发给FTP这个程序处理。

  • 数据包最终完成转发

总结:数据在传输的时候总会查看Header来确定下一个协议 一环紧挨着一环不出错。协议号对应着协议号和端口号。

TCP/IP Protocol Suite 4

TCP vs UDP

  • TCP 可靠传输协议
  • UDP 不可靠传输协议

TCP 3-Way Handshake(TCP三次握手)

1.三次握手

image-20230920145737119

三次握手就是发送方发送数据给接收方收到信息后并做出确认收到,发送方收到确认信息后,再次回复确认

1.发送方发送数据
2.接收方收到信息后确认并回复:我收到信息了
3.发送方看到确认信息并回复确认

2.Buffer(缓存区)

其中Buffer(缓存区):接收到一个数据包时,会暂时存放数据包的一个地方。

3.为什么TCP传输协议可靠?

因为三次握手其中一方发生问题,都不能进行数据传输。

TCP Flow Control(TCP控制流)

image-20230920153100313

缓存区已满(流量控制机制)

1.当数据传输太快,缓存区已满时(Buffer overflow)

  1. 发送方(Seeder)发送(Seed)数据,接收方(receiver)接收(receiving )数据,收到的数据承载不了。
  2. 这时接收方(receiver)发送(Seed)停止信息
  3. 发送方(Seeder)停止发送信息后,会把剩下的数据处理完成,有时间处理新数据时
  4. 发送方(Seeder)就会告诉对方,可以继续发送(seed)了,可以避免缓存已满(Buffer overflow)的情况。

Sequencing & Acknowledgment(序号和响应)

image-20230920153125563

  1. 数据传输时是分成很多小块,例如1G的文件会分成10个100M,一次会传输100M
  2. 那么接收方接收到零散的数据会怎么重新组装起来

(因为可能会发生先发送的数据后到,后发送的数据先到;先发送的数据包比较大一直在传输,而后面的数据包小会先传输出去)

  1. 不能保证传输的数据会按顺序到达,Sequencing机制会给每一个数据安排一个号码,现在即使后面的数据包小的先传输到达,但是也能够按照序号顺序重新组装

TCP Window Control(新的窗口控制机制)

  1. 一次能发送多少个数据包
  2. 收到一个数据包响应一次

TCP Retransmission(重传机制)

如果出现发送的数据包丢失

image-20230920155111771

  1. 发送方发送6个数据包
  2. 接收方接收数据时,发现序号5的这个数据包没有传过来 也就不能对数据进行还原,就会给发送发发送同一个序号
  3. 发送方收到序号5,就会做出响应,将序号5重传

TCP Segment Format(TCP格式)

image-20230920155752431

TCP格式

  1. 16-bit-source Port (源端口) 16-bit-destination Port(目的端口号)
  2. 32-bit-sequence Number (序列号)
  3. 32-bit-Acknowledgment Nmuber (确认号)
  4. 16-bit-window size (窗口大小)

TCP头部有20个字节,但可以增加到24个字节,得益于Options

UDP Segment Format(UDP格式)

image-20230922212929677

UDP格式

UDP相对于TCP来说格式比较简单

  1. 源端口 and 目的端口号
  1. 长度
  2. 校验和

什么时候使用TCP,什么时候使用UDP

这个属于应用层面,一般由程序员决定具体使用那个协议
以前线材质量不好,会导致数据传输的时候丢包,现在线材质量好了,使用UDP传输时不会使数据丢包,所以现在很多的程序会采用UDP传输,因为速度快。

Network Layer Protocols

image-20230922214233287

  1. Routing and providing a single network interface to the upper layers路由为上层提供单个网络接口
  2. Internet Protocol IP互联网协议
  3. Internet Control Message Protocol ICMP(互联网控制消息协议)
  4. Address Resolution Protocol ARP(地址解析协议)

考点

汇总的对比

image-20230922214826853

posted @ 2023-09-22 21:52  魏阳阳  阅读(17)  评论(0编辑  收藏  举报