tcp/ip 协议族
![](https://i-blog.csdnimg.cn/blog_migrate/f1de80960c18be0d0cdc7bdd75cd4838.png)
ip
![](https://i-blog.csdnimg.cn/blog_migrate/59a604eaa4695c6d58b81333df97b1ae.png)
在真实环境中,会把主机号再分成一个子网号和一个主机号。这样的主机号才是最终容纳的主机数量。
所以需要使用子网掩码(32位)来分子网号和主机号。其中值为1的比特是网络号和子网号,值为0的是比特是主机号。可以在windows平台cmd.exe 输入ipconfig 查看本机的ip地址和子网掩码。
![](https://i-blog.csdnimg.cn/blog_migrate/2dbbab4b606d6189db7b7f7d31ad55dd.png)
另外可以使用netstat命令查看ip连接情况
![](https://i-blog.csdnimg.cn/blog_migrate/0d6172fbe44018ae6c719af01f2d2406.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d81b7c2bc17de23711bba4e05ef7d5c2.png)
4位版本号
指定IP协议的版本。对IPv4来说,为4。
4位头部长度
标识该IP头部有多少个32bit(即多少行),四位最大表示15,所以IP头部最长为60字节。
8位服务类型
包括一个三位的优先权字段(现在已忽略)四位的TOS字段和一位保留字段(保留需置0).四位的TOS字段分别表示:最小延时,最大吞吐量,最高可靠性和最小费用。这四位中最多只有一位置1。应用程序根据需要设置(比如ssh需要最小延时,ftp需要最大吞吐量)。
16位总长度
是指整个IP数据报的长度,以字节为单位,因此IP数据报最大长度为65535-1字节。但由于MTU的限制,长度超过MTU的数据报都将被分片传输,所以实际传输的IP数据报的长度都远远没有达到最大值。
16位标识:
唯一地标识主机发送的每一个数据报。其初始值由系统随机生成,每发送一个数据报,其值就加一。该值在数据报分片时被复制到每个分片中,因此同一个数据报的所有分片都具有相同的标识符。
3位标志字段:
第一位保留。第二位标识禁止分片。设置后,IP将不对该数据报分片,当该数据报长度超过MTU时,IP模块将丢弃该数据包并返回一个ICMP差错报文。第三位表示更多分片。除了数据报的最后一个分片外,其他分片都要把该位置1.
13位分片偏移:
是分片相对原始IP数据报开始处(仅指数据部分)的偏移。实际的偏移值是该值左移三位(乘8)后得到的。因此,每个IP分片的数据部分的长度必须是8的整数倍。
8位生存时间TTL(time to live):
是数据报到达目的地之前允许经过的路由器跳数。发送端设置(通常是64)。数据报每经过一次路由,该值就被路由器减一,为零时,路由器将丢弃该数据报,并向源端发送一个ICMP差错报文。TTL可以防止数据报陷入路由循环。
8位协议:
用来区分上层协议。/etc/protocols文件定义了所有上层协议对应的字段的数值。例如,ICMP是1,TCP是6,UDP是17。
16位头部校验和:
由发送端填充,接收端对其使用CRC算法检验头部在数据传输过程中是否损坏。
32位源端IP地址:
用来表示IP数据报的发送端
32位目的端IP地址:
用来表示IP数据报的接收端
选项字段:
是可变长的可选信息。最多包含40字节,可用的选项有:
记录路由:将途径的路由器的ip地址填入选项部分,用于跟踪数据报的传递路径。
时间戳:告诉每个路由器将数据报被转发的时间(或时间与IP地址对)填入IP头部的选项部分,这样就可以测量途径路由之间数据报传输的时间。
松散路由选择:指定路由IP地址列表,数据包发送过程必须经过其中所有路由器。
严格路由选择:数据报只能经过被指定的路由器。
wireshark抓包
![](https://i-blog.csdnimg.cn/blog_migrate/5dd2dd4ee35f3f6a292d5b1b2cf9344a.png)
域名系统(DNS)
ip地址和域名之间的映射关系
帧
通过以太网传输的比特流称之为帧,帧的长度为46-1500字节之间。以太网的最大传输单元MTU是1500
端口
端口最多有65535个,按端口号可分为3大类:自己写的应用一般使用注册端口(即1024-49151之间)
(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是HTTP通讯。
(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。
(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。
服务端一般绑定在固定的端口上,客户端不关系所使用的端口,可使用临时端口。
环回接口
即在同一台主机上的服务器和客户端通过tcp/ip通信。环回接口的地址是127.0.0.1。环回接口的ip数据报不能出现在网络上。环回接口把数据从ip网络层传到ip输入队列。
ping
它利用ICMP回显请求和回显应答报文,而不用经过传输层(TCP/UDP).