乐趣区

关于网络通信:小白看了也能懂的TCPIP基础

作者:hackett

微信公众号:加班猿

TCP/IP(Transmission Control Protocol/Internet Protocol)传输控制协议 / 网际协议)是指可能在多个不同网络间实现信息传输的协定簇。TCP/IP 协定不仅仅指的是 TCP 和 IP 两个协定,而是指一个由 FTP、SMTP、TCP、UDP、IP 等协定形成的协定簇,只是因为在 TCP/IP 协定中 TCP 协定和 IP 协定最具代表性,所以被称 TCP/IP 协定。——《百度百科》

经典的 OSI 七层模型,TCP/IP 被分为 4 层,每层的协定的工作形式不一样,所封装的下层数据的形式也不一样。

一、IP 地址

1、Windows 下“win+r”弹出关上程序或资源的窗口,输出“cmd”后回车,用命令 ipconfig 即可查看电脑的 IP 地址(我用的是 WiFi,所以看的是无线局域 WLAN)

2、Linux 下在终端输出 ifconfig -a 命令查看本人的 IP 地址

二、域名

12 位数字组成的 IP 地址难记,IP 地址还有一个别名称作 域名,IP 地址和域名是一一对应的常见的域名后缀有 com、net、org。一般来说.com 是商业机构用的,.net 网络服务供应商应用,.org 是一些组织应用,当初没有什么限度。

1、咱们能够关上阿里云万网域名官网

2、咱们查下 hackett 这个名字的域名后缀为 wiki 是否曾经被注册,能够看到 hackett.wiki 这个域名曾经被注册了,想要注册只能选其余域名后缀或其余名字注册。

3、这是我本人 19 年底注册的域名 hackett.wiki 域名。

三、MAC 地址

MAC 地址用于在网络中惟一标示一个网卡,一台设施若有一或多个网卡,则每个网卡都须要并会有一个惟一的 MAC 地址,由网络设备制造商生产时写在硬件外部。MAC 地址是6Byte(48 位)通常示意为 12 个 16 进制数,每 2 个 16 进制数之间用冒号隔开,如 18:56:80:FA:DC:E1 就是一个 MAC 地址

Windows 下用 ipconfig -all 查看

Linux 下在终端输出 ifconfig 命令查看

四、端口号

IP 地址是用来查找和发现网络中的地址的,端口号是用来进行程序互相通信的(打个比方:IP 地址是一栋楼,端口就是进出这栋楼的入口),一个端口 16Byte,即 2^16=65536 个,1~1023 为公认的端口绑定了某些服务协定,不能轻易调配,从 1024—49151 是被注册的端口,也成为“用户端口”,其余的为 长期端口

罕用的有:

  • FTP : 21
  • TELNET : 23
  • SMTP : 25
  • DNS : 53
  • TFTP : 69
  • HTTP : 80
  • SNMP : 161
  • SSH :22

五、IP 数据报

IP 数据报的首部是5X4=20Byte,IP 数据报 = 首部 + 数据局部

  1. 版本号:4 位,0100 示意 IPV4,0110 标记 IPV6
  2. 首部长度:4 位,示意首部的长度,包含可选字段
  3. 服务类型:最小时延、最大吞吐量、最高可靠性、最小破费 4 种,每种占 1 位
  4. 总长度:报头长度 + 数据局部长度 = 总长度(16 位)最多能够 2^16=65536 字节
  5. 标识:16 位,当数据报因为长度超过网络的 MTU 而必须分片时,依据分片中的标识字段是否雷同判断这些分片是否同一个数据报的分片,以此来进行分片的重组。通常每发送一份报文它的值就会加 1。
  6. 标记:3 位,只有 2 位有意义。第二位 MF(More Fragment)位 1 示意前面还有‘’分片”的数据报,为 0 示意已到最初一个数据报;第三位 DF(Don’t Fragment)为 1 意思是“不能分片”。只有当 DF= 0 时才容许分片。
  7. 偏移:13 位,在接管方进行数据报重组时用来标识分片的程序。
  8. 生存工夫:8 位,用于设置数据报能够通过的最多的路由器个数。TTL 的初始值由源主机设置(通常为 32 或 64),每通过一个解决它的路由器,TTL 值减 1。如果一个数据报的 TTL 值被减至 0,它将被抛弃。
  9. 协定:8 位,用来标识是哪个协定向 IP 传送数据。ICMP 为 1,IGMP 为 2,TCP 为 6,UDP 为 17,GRE 为 47,ESP 为 50。
  10. 首部校验和:依据 IP 首部计算的校验和码。
  11. 源 IP 和目标 IP:数据报头还会蕴含该数据报的发送方 IP 和接管方 IP。
  12. 选项:是数据报中的一个可变长、可选的信息,不罕用,多用于平安、军事等畛域。

六、IP 的地址的分类

IP 的地址分成 4 类 ipv4 地址占 4 个字节(32 位)

A B C D E 四类网络地址

例如:192.168.1.100

网络号:辨别不同的网络(局域网)

主机号:辨别同一个网络下不同的主机

A 类地址:要求网络号占一个字节,主机号占 3 个字节,并且要求网络号 (8 位二进制) 必须是 0 结尾

0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

网络号 0–127

主机号 1—254.254.254

B 类地址:要求网络号占两个字节,主机号占 2 个字节,并且要求网络号 (16 位二进制) 必须是 10 结尾

10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

网络号 128.0–191.255

C 类地址:要求网络号占三个字节,主机号占 1 个字节,并且要求网络号 (24 位二进制) 必须是 110 结尾

110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

网络号 192.0.0–223.255.255

D 类地址:组播专用地址,不辨别网络号和主机号,必须是 1110 结尾

1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

E 类 IP 地址 以“llll0”开始,为未来应用保留。240.0.0.0 到 255.255.255.254,255.255.255.255 用于播送地址。

1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

下图 IP 地址就是个 C 类地址

七、ping 和 traceroute 程序

ping 程序和 traceroute 都是基于 ICMP 协定的工具。

用 ping 能够检测两台主机是否连,下图就是我用 Ubuntu 跟 Windows 各自 ping 的信息。ping 命令会返回一个 TTL 值,咱们能够应用它来判断指标的操作系统类型。常见操作系统缺省 TTL 值如下:

  • UNIX TTL: 255;
  • Linux TTL: 64;
  • WINDOWS 95/98 TTL: 32;
  • Windows NT 4.0/2000/XP/2003/7/8/10 TTL:128。

traceroute 程序是用来侦测主机到目标主机之间所经路由状况的重要工具。

1、Linux 须要装置 traceroute 能力进行侦测。

2、Windows 用 tracert 进行侦测,下图是先通过我笔记本 WiFi 连贯的 192.168.1.1 的路由,再通过一系列的路由最终达到谷歌的 8.8.8.8

八、UDP

UDP(User Datagram Protocol)协定与 TCP 协定一样用于解决数据包,在 OSI 模型中,两者都位于传输层,处于 IP 协定的上一层。

它的次要特点有:

  • UDP 是 无连贯的,发送数据之前不须要建设连贯(而 TCP 须要),缩小了开销和时延。
  • UDP 尽最大致力交付,不保障交付可靠性,因而主机不须要保护简单的连贯状态;。
  • UDP 是 面向报文的,对于从应用层交付下来的 IP 数据报
  • UDP 的 首部开销小,只有 8 个字节,它比 TCP 的 20 个字节的首部要短。
  • UDP 没有拥塞管制,呈现网络拥塞时发送方也不会升高发送速率。这种个性对某些实时利用是很重要的,比方 IP 电话,视频会议等,它们容许拥塞时失落一些数据,因为如果不摈弃这些数据,极可能造成时延的累积。
  • UDP 反对一对一、一对多、多对一和多对多的交互通信。

UDP 报文

UDP 数据报可分为两局部:UDP 报头和数据局部。其中数据局部是应用层交付下来的数据。UDP 报头总共 8 字节(2 字节源端口、2 字节目标端口、2 字节长度、2 字节校验和)

九、TCP

TCP(Transmission Control Protocol)是一种面向连贯的、牢靠的、基于字节流的传输层通信协议。

它的次要特点有:

  • 面向字节流
  • 面向连贯
  • 牢靠通信形式,无差错、不失落、不反复、按程序。;
  • TCP 连贯是 点对点 的,一条 TCP 连贯只能连贯两个端点。
  • UDP 反对一对一、一对多、多对一和多对多的交互通信。

TCP 报文

TCP 数据报可分为两局部:TCP 报头和数据局部。其中数据局部是应用层交付下来的数据。TCP 报文段的报头有前 20 字节的固定局部

各字段的性能:

  1. 源端口:2 字节
  2. 目标端口:2 字节
  3. 序号:4 字节,范畴 0~2^32-1,报头中的序号字段值则指的是本报文段数据的第一个字节的序号。
  4. 确认号:4 字节,冀望收到下个 报文段 的第一个数据字节的序号
  5. 数据偏移:4 位,TCP 报文段的报头长度,20 字节 + 选项字段
  6. 保留:6 位(URG、ACK 确认、PSH 推送、RST 复位、SYN 同步、FIN 终止)
  7. 窗口:2 字节,指本人的接管窗口大小
  8. 校验和:2 字节,用于校验数据在传输中是否出错
  9. 紧急指针:2 字节,当保留字段的 URG= 1 无效
  10. 选项:长度可变,最长 40 字节

如果你感觉文章还不错,记得 ”点赞关注

关注我的微信公众号【加班猿】能够获取更多内容

退出移动版