小白看了也能懂的TCP/IP基础

 

作者:hackett
微信公众号:加班猿

 

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

img

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

一、IP地址

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

imgimg

2、Linux下在终端输入 ifconfig -a 命令查看自己的IP地址

img

二、域名

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查看

img

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

img

四、端口号

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数据报=首部+数据部分

img

  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四类网络地址

img

例如: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类地址

img

七、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。

img

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

1、Linux需要安装traceroute才能进行侦测。

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

img

八、UDP

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

它的主要特点有:

1、UDP 是无连接的,发送数据之前不需要建立连接(而 TCP 需要),减少了开销和时延。

2、UDP尽最大努力交付,不保证交付可靠性,因此主机不需要维护复杂的连接状态;。

3、UDP 是面向报文的,对于从应用层交付下来的 IP 数据报

4、UDP的首部开销小,只有8个字节,它比TCP的20个字节的首部要短。

5、UDP 没有拥塞控制,出现网络拥塞时发送方也不会降低发送速率。这种特性对某些实时应用是很重要的,比如 IP 电话,视频会议等,它们允许拥塞时丢失一些数据,因为如果不抛弃这些数据,极可能造成时延的累积。

6、UDP 支持一对一、一对多、多对一和多对多的交互通信。

 

UDP报文

 

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

九、TCP

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

它的主要特点有:

1、面向字节流

2、面向连接

3、可靠通信方式,无差错、不丢失、不重复、按顺序。;

4、TCP 连接是 点对点 的,一条 TCP 连接只能连接两个端点。

5、UDP 支持一对一、一对多、多对一和多对多的交互通信。

 

TCP报文

 

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

img

各字段的功能:

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字节

 

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

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

 

posted @ 2020-10-15 09:48  hackettt  阅读(311)  评论(0编辑  收藏  举报