TCP/IP协议详解

认识IP地址

概念
IP 地址( Internet Protocol Address )是指互联网协议地址,又译为网际协议地址。
作用
IP 地址是 IP 协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
格式
IP 地址是一个 32 位的二进制数,通常被分割为 4 “8 位二进制数 (也就是 4 个字节),如:
01100100.00000100.00000101.00000110
通常用 点分十进制 的方式来表示,即 a.b.c.d 的形式( a,b,c,d 都是 0~255 之间的十进制整数)。如:100.4.5.6。
组成
IP 地址分为两个部分,网络号和主机号
网络号 标识网段 ,保证相互连接的两个网段具有不同的标识;
主机号 标识主机 ,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;

子网掩码

格式
子网掩码格式和 IP 地址一样,也是一个 32 位的二进制数。其中左边是网络位,用二进制数字 “1” 表示, 1的数目等于网络位的长度;右边是主机位,用二进制数字“0” 表示, 0 的数目等于主机位的长度。
子网掩码也可以使用二进制所有高位 1 相加的数值来表示
作用
(1)划分 A B C 三类 IP 地址子网:
如一个 B IP 地址: 191.100.0.0 ,按 A ~ E 类分类来说,网络号二进制数为 16 位网络号 +16 位主机号。
假设使用子网掩码 255.255.128.0 (即 17 ) 来划分子网,意味着划分子网后,高 17 位都是网络位 / 网络 号,也就是将原来16 位主机号,划分为 1 位子网号 +15 位主机号。
此时, IP 地址组成为:网络号 + 子网号 + 主机号,网络号和子网号统一为网络标识(划分子网后的网络 / 网段)
计算方式
IP 地址和子网掩码进行 按位与 操作(二进制相同位,与操作,两个都是 1 结果为 1 ,否则为 0 ),得 到的结果就是网络号。 将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。

认识MAC地址

MAC 地址,即 Media Access Control Address ,用于标识网络设备的硬件物理地址。
主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个 MAC
地址。
网络通信,即网络数据传输,本质上是网络硬件设备,将数据发送到网卡上,或从网卡接收数据。
硬件层面,只能基于 MAC 地址识别网络设备的网络物理地址。

总结IP地址和MAC地址

IP 地址描述的是 路途总体的起点和终点 ;是给人使用的网络逻辑地址。
MAC 地址描述的是路途上的每一个区间的起点和终点,即 每一跳的起点和终点 ;是给网络硬件设
备使用的网络物理地址。

TCP协议

TCP ,即 Transmission Control Protocol ,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。
TCP 协议段格式
/ 目的端口号:表示数据是从哪个进程来,到哪个进程去;
32 位序号 /32 位确认号;
4 TCP 报头长度:表示该 TCP 头部有多少个 32 bit (有多少个 4 字节);所以 TCP 头部最大长度是 15 * 4 = 60
6 位标志位 :
URG :紧急指针是否有效
ACK :确认号是否有效
PSH :提示接收端应用程序立刻从 TCP 缓冲区把数据读走
RST :对方要求重新建立连接;我们把携带 RST 标识的称为 复位报文段
SYN :请求建立连接;我们把携带 SYN 标识的称为 同步报文段
FIN :通知对方,本端要关闭了,我们称携带 FIN 标识的为 结束报文段
16 位窗口大小
16 位校验和:发送端填充, CRC 校验。接收端校验不通过,则认为数据有问题。此处的检验和不
光包含 TCP 首部,也包含 TCP 数据部分。
16 位紧急指针:标识哪部分数据是紧急数据;
40 字节头部选项;
TCP 原理
TCP 对数据传输提供的管控机制,主要体现在两个方面:安全和效率。
这些机制和多线程的设计原则类似:保证数据传输安全的前提下,尽可能的提高传输效率。
确认应答机制(安全机制)
每一个 ACK 都带有对应的确认序列号,意思是告诉发送者,我已经收到了哪些数据;下一次你从哪里开始发。
超时重传机制(安全机制)
主机 A 发送数据给 B 之后,可能因为网络拥堵等原因,数据无法到达主机 B
如果主机 A 在一个特定时间间隔内没有收到 B 发来的确认应答,就会进行重发;
连接管理机制(安全机制)
滑动窗口(效率机制)
对每一个发送的数据段,都要给一个 ACK 确认应答。收到 ACK 后再发送 下一个数据段。这样做有一个比较大的缺点,就是性能较差。尤其是数据往返的时间较长的时候。
既然这样一发一收的方式性能较低,那么我们一次发送多条数据,就可以大大的提高性能(其实是将多个段的等待时间重叠在一起了)。
流量控制(安全机制)
接收端处理数据的速度是有限的。如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,继而引起丢包重传等等一系列连锁反应。
因此 TCP 支持根据接收端的处理能力,来决定发送端的发送速度。这个机制就叫做 流量控制( Flow Control
拥塞控制(安全机制)
虽然 TCP 有了滑动窗口这个大杀器,能够高效可靠的发送大量的数据。但是如果在刚开始阶段就发送大量的数据,仍然可能引发问题。
因为网络上有很多的计算机,可能当前的网络状态就已经比较拥堵。在不清楚当前网络状态下,贸然发送大量的数据,是很有可能引起雪上加霜的。
TCP 引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据;
少量的丢包,我们仅仅是触发超时重传;大量的丢包,我们就认为网络拥塞;
TCP 通信开始后,网络吞吐量会逐渐上升;随着网络发生拥堵,吞吐量会立刻下降;
拥塞控制,归根结底是 TCP 协议想尽可能快的把数据传输给对方,但是又要避免给网络造成太大压力的折中方案。
延迟应答(效率机制)
如果接收数据的主机立刻返回 ACK 应答,这时候返回的窗口可能比较小。
假设接收端缓冲区为 1M 。一次收到了 500K 的数据;如果立刻应答,返回的窗口就是 500K
但实际上可能处理端处理的速度很快, 10ms 之内就把 500K 数据从缓冲区消费掉了;
在这种情况下,接收端处理还远没有达到自己的极限,即使窗口再放大一些,也能处理过
来;
如果接收端稍微等一会再应答,比如等待 200ms 再应答,那么这个时候返回的窗口大小就是
1M
捎带应答(效率机制)
在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是 " 一发一收 " 的。意味着客户端给服务器说了 "How are you" ,服务器也会给客户端回一个 "Fine, thank you"
那么这个时候 ACK 就可以搭顺风车,和服务器回应的 "Fine thank you" 一起回给客户端

如何避免粘包问题?

对于定长的包,保证每次都按固定大小读取即可;例如上面的 Request 结构,是固定大小
的,那么就从缓冲区从头开始按 sizeof Request )依次读取即可;
对于变长的包,可以在包头的位置,约定一个包总长度的字段,从而就知道了包的结束位
置;
对于变长的包,还可以在包和包之间使用明确的分隔符(应用层协议,是自己来定的,只要保证分隔符不和正文冲突即可);

UDP协议

UDP 协议端格式
16 UDP 长度,表示整个数据报( UDP 首部 +UDP 数据)的最大长度;
如果校验和出错,就会直接丢弃;
UDP 的特点
UDP 传输的过程类似于寄信。
无连接
知道对端的 IP 和端口号就直接进行传输,不需要建立连接;
不可靠
没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方, UDP 协议层也不会给应用层返回任何错误信息;
面向数据报
应用层交给 UDP 多长的报文, UDP 原样发送,既不会拆分,也不会合并;
UDP 传输 100 个字节的数据:
如果发送端一次发送 100 个字节,那么接收端也必须一次接收 100 个字节;而不能循环接收 10 次,
每次接收 10 个字节。
缓冲区
UDP 只有接收缓冲区,没有发送缓冲区:
UDP 没有真正意义上的 发送缓冲区 。发送的数据会直接交给内核,由内核将数据传给网络层协议
进行后续的传输动作;
UDP 具有接收缓冲区,但是这个接收缓冲区不能保证收到的 UDP 报的顺序和发送 UDP 报的顺序一
致;如果缓冲区满了,再到达的 UDP 数据就会被丢弃;
UDP socket 既能读,也能写,这个概念叫做 全双工
大小受限
UDP 协议首部中有一个 16 位的最大长度。也就是说一个 UDP 能传输的数据最大长度是 64K (包含 UDP 首部)。
基于 UDP 的应用层协议
NFS :网络文件系统
TFTP :简单文件传输协议
DHCP :动态主机配置协议
BOOTP :启动协议(用于无盘设备启动)
DNS :域名解析协议
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TCP/IP协议详解卷1(英文版)是一本经典的网络技术书籍,对于理解和掌握TCP/IP协议是非常有帮助的。 本书首先介绍了网络通信的基本原理和TCP/IP协议的体系结构,然后详细讲解了每一层协议的功能、特点和实现方法。其中,TCP协议和IP协议是重点的讲解对象,分别从数据结构、传输机制、拥塞控制、错误处理等多个方面逐一剖析,涵盖了从实现到应用的全过程。 另外,本书还介绍了TCP/IP协议的各种应用协议,如HTTP、FTP、SMTP等,以及网络安全、路由选择、网络管理等相关技术。通过阅读本书,不仅可以理解TCP/IP协议的原理和流程,还可以掌握实际应用中的场景、需求和解决方案。 总的来说,TCP/IP协议详解卷1(英文版)是一本系统而详尽的网络技术著作,对于网络技术爱好者、工程师以及网络管理员都是一本不可多得的参考书籍。无论是学习TCP/IP协议的初学者还是深入研究的专业人员,都可以从中获得丰富的知识和经验。 ### 回答2: TCP/IP协议详解卷1英文版,是一本介绍互联网传输控制协议和网络互联协议的著作。本书从TCP/IP的电脑网络体系结构出发,介绍了TCP、UDP、IP、ICMP、ARP等网络协议的原理、功能和应用,进一步讲解了TCPIP协议在数据传输、数据包格式、错误处理和路由选择等方面的应用。 本书虽然详细介绍了TCP/IP协议的技术细节,但是作者用通俗易懂的语言阐述了其内在原理和运作机制,使得普通读者也能够理解。同时,作者介绍了TCP/IP协议在各种应用场景下的具体实现和应用方法,从而为网络管理员和网络开发者提供了宝贵的参考。 总之,TCP/IP协议详解卷1英文版是一本介绍TCP/IP协议基础知识的重要参考书,对于想要深入了解互联网传输控制协议和网络互联协议的人群具有重要的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值