TCP/IP浅谈

本文深入探讨了TCP/IP协议的组成、工作原理及应用实例,包括数据封装、路由选择、IP地址分配、子网寻址、ICMP协议、动态路由、UDP与TCP协议的区别与设计,以及网络开发中关键概念的解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.TCP/IP不是协议,而是协议族的总称。可分为四层结构,分别为:

(1) 应用层:包含高层协议如FTP、HTTP、TELNET等

(2) 传输层:TCP、UDP处于该层

(3) 网络层:IP协议位于该层,负责对数据加上IP地址和其他的数据,以确定传输的目标

(4) 数据链路层:为数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备

2. 发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解析,最后拿到需要的数据。

3. IP地址一般为:网络号+主机号,域名系统的作用是将主机名转换为IP地址的服务。RFC是TCP/IP的标准文档,应用接口一般包括socket和TLI。

4. 数据链路层的目的:

(1) 为IP模块发送和接收IP数据

(2) 为ARP模块发送ARP请求和接收ARP应答

(3) 为RARP模块发送RARP请求和接收RARP应答

其中ARP为地址解析协议,即将IP地址解析为MAC地址

5. PPP是点对点协议,提供了了一种低速接入的解决方案。

6. MTU是最大传输单元,如果IP数据报过大,则要进行分片,使得每片都小于MTU。netstat -in命令可以打印MTU的结果。

7. 环回接口(LOOKBACK),即127.0.0.1尝试自己的机器服务器好使不好使。

(1) 传给环回地址的任何数据均作为IP输入

(2) 传给广播地址或多播地址的数据报复制一份到环回接口,然后送到以太网上

(3) 任何传给主机IP地址的数据均送到环回接口

8. IP协议为不可靠协议,其中的字段TTL,即8位的生存时间,数据包在穿过多少个路由后才会被抛弃,每经过一个路由,TTL减一,当为0时则被抛弃。

路由器和主机将会用如下的方式处理一个IP数据包

(1) TTL一到0,IP包自动抛弃

(2) 搜索路由表,优先搜索匹配主机,能找到和IP地址完全一致的目标主机,则向其发包

(3) 搜索路由表,如匹配主机失败,则匹配同子网的路由器,如找到,将包发给路由器

(4) 搜索路由表,若匹配同子网路由器失败,则匹配同网号路由器,若找到,将包发给路由器

(5) 搜索路由表,如果以上都失败,则搜索默认路由,如存在,则发包

(6) 若都失败,则丢包

9. 子网寻址:可将IP地址细分为网络号+子网号+主机号,如210.30.109.134中210.30为网络号,109为子网号

134为主机号,对应的子网掩码为255.255.255.0。

10. ICMP(Internet Control Message Protocol) 网络控制报文协议,当IP数据传送发生错误时,ICMP会将错误信息封包,然后传送回主机。ICMP报文在特殊情况下,不产生错误报文,因为要防止产生ICMP报文的无线传播。

ICMP有以下两种功能:

(1) 查询报文:ping查询,子网掩码查询,时间戳查询

(2) 差错报文:产生在数据传送,发生错误时

ping利用ICMP协议包侦测另一个主机是否可达,给出了传送的时间和TTL的数据,可查看主机到目的主机之间的路由信息,但不能完全记录。

traceroute用来侦测主机到目的主机之间所经路由情况,原理之一是发送的端口号>30000,因此到达目的主机时,目的主机只能发送一个端口不可达的ICMP数据报给主机

11. 路由器的5个标志(静态IP选路):

U:可使用

G:路由到一个网关,无该标志,说明目标是直接相连的

H:路由到一个主机,无该标识,说明目标是一个网络

D:路由为重定向报文创建的

M:路由已被重定向报文修改

静态IP选路的方式:

(1) 首先用IP地址匹配带H标志的IP地址(H)

(2) 若(1)失败,则匹配网络地址(G)

(3) 若(2)失败,则发送到默认网关

12. route add命令用于手动添加路由

当IP包在某路由器中发现没有路由可走,则路由器会给源主机发送“主机/网络不可传”的ICMP包来报错。

IP重定向报文:IP包在某地方转向时,会给发送IP报的源主机一个ICMP重定向报文,源主机将更新自己的路由表,因此路由表将越来越完善,数据转发速度也将越来越快。

注意:重定向报文只能由路由器发出,重定向报文为主机所用,而非路由所用

13. 动态路由协议:只用于相邻路由之间相互通信,动态选路在系统核心网外部进行,只是用一些选路的策略影响路由表,常用到的方法是RIP(选路信息协议)与OSPF(开放最短路径优先协议)。

14. UDP协议

端口号:UDP协议必须通过某个标志用以区分不同的程序所需要的数据包

检验和:发送端进行检验和

UDP长度:可以很长,但需要分片。

IP头里,16bit识别号唯一记录了一个IP包的ID,具有同一个ID的IP片将会被重组,13bit片偏移则记录了某IP片相对整个包的位置,中间的3bit标志着该分片是否还有新的分片。

目标主机的处理速度赶不上数据接收的速度时,主机将发出“我受不了了”的ICMP报文。

15. UDP服务器的设计:

(1) 关于客户端和IP地址:服务器必须有根据客户IP地址和端口判断数据包是否合法的能力

(2) 关于目的地址:服务器必须要有过滤广播地址的能力

(3) 关于数据输入:服务器的每一个端口号都会和一块输入缓冲区对应,进来的输入根据先来后到的原则等待服务器处理,所以难免缓冲区溢出,UDP可能被丢弃,而应用服务器本身并不知道这个问题。

(4) 服务器应把自己绑定到某一网络接口的某端口上

16. 单播、广播域多播

单播:对特定主机进行数据传送,数据链路层给出的数据头里是非常具体的地址

广播:针对某一网络上的所有主机发送数据包

多播:给一组特定的主机发送数据,多播租的IP地址244.0.0.0-239.255.255.255

17.  TCP保证可靠性的原因

(1) 应用数据被分割成TCP认为最合适发送的数据块

(2) 当TCP发出一个报文段后,会启动一个定时器,等待目的端确认收到这个报文段,如果不及时收到一个确认,将重发这个报文段,即超时重传

(3) 当TCP收到发自TCP连接另一端的数据,将发送一个确认

(4) TCP将保持它首部和尾部的检验和,目的是检验数据包在传输过程中的任何变化

(5) 提供流量监控

18. TCP发送数据过程:

(1) 双方建立连接

(2) 发送方向接收方发送TCP数据包,然后等待对方确认TCP数据报,如果没有就重新发,如果有,则发送下一个数据报。

(3) 接收方等待发送方的数据报,如果得到数据报并检验无误,就发送ACK确认,并等待下一个数据报的到来

(4) 中止链接

19. TCP建立连接的三次握手

(1) 客户端先向服务器申请打开某一个端口

(2) 服务器发回一个ACK报文通知客户端请求收到

(3) 客户端收到报文后,再次向服务器端发送确认报文

20. 结束连接:

TCP的链接为全双工,因此,必须关闭穿和送两个方向上的连接:

(1) 客户端-->服务器,发送FIN为1的TCP报文

(2) 服务器-->客户端,返回确认ACK报文,并发送FIN报文

(3) 客户端-->服务器端,回复ACK报文


资源下载链接为: https://pan.quark.cn/s/1bfadf00ae14 华为移动服务(Huawei Mobile Services,简称 HMS)是一个全面开放的移动服务生态系统,为企业和开发者提供了丰富的工具和 API,助力他们构建、运营和推广应用。其中,HMS Scankit 是华为推出的一款扫描服务 SDK,支持快速集成到安卓应用中,能够提供高效且稳定的二维码和条形码扫描功能,适用于商品扫码、支付验证、信息获取等多种场景。 集成 HMS Scankit SDK 主要包括以下步骤:首先,在项目的 build.gradle 文件中添加 HMS Core 库和 Scankit 依赖;其次,在 AndroidManifest.xml 文件中添加相机访问和互联网访问权限;然后,在应用程序的 onCreate 方法中调用 HmsClient 进行初始化;接着,可以选择自定义扫描界面或使用 Scankit 提供的默认扫描界面;最后,实现 ScanCallback 接口以处理扫描成功和失败的回调。 HMS Scankit 内部集成了开源的 Zxing(Zebra Crossing)库,这是一个功能强大的条码和二维码处理库,提供了解码、生成、解析等多种功能,既可以单独使用,也可以与其他扫描框架结合使用。在 HMS Scankit 中,Zxing 经过优化,以更好地适应华为设备,从而提升扫描性能。 通常,ScanKitDemoGuide 包含了集成 HMS Scankit 的示例代码,涵盖扫描界面的布局、扫描操作的启动和停止以及扫描结果的处理等内容。开发者可以参考这些代码,快速掌握在自己的应用中实现扫码功能的方法。例如,启动扫描的方法如下: 处理扫描结果的回调如下: HMS Scankit 支持所有安卓手机,但在华为设备上能够提供最佳性能和体验,因为它针对华为硬件进行了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值