TCP/IP协议栈 和IP地址规划

TCP/IP IP地址的规划

TCP/IP  Transmission Control Protocol /Internet Protocol

TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议

和ISO参考模型的分层有对应关系

PA]OT6R$]G7CRYA2J37XL}8

应用层  (File transfer)

FTP ,  TFTP  ,pop3 (邮箱), imap  ,stp ,htps ,smtp (邮件)
–Network File System

E-mail  , smtp (邮件)

–Simple Mail Transfer Protocol

Remote login ,Telnet ,rlogin

Network management

–Simple Network Management Protocol

Name management

–Domain Name System  (NDS)53    域名系统

 

传输层 (Transport)HTTP  80

TCP         传输控制协议,通讯有协商过程,全双工协议,半关闭  可靠性,有数字编号,性能差,有错误检                   查纠错功能,数据恢复重传,数据包打成段排序,流量控制滑动窗口,拥塞控制,慢启动和拥塞                   避免算法,确认机制,E-mail,File shanring  传输文件,Downloading   下载)

cat  /etc/service   可以查看应用程序的端口号

 

TCP  包头

NV%_2U[A89[76)6LYGO9)23

源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时

刻能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目

标端口是用16位表示的,可推算计算机的端口个数为2^16个

0-15 是源端口       16-31是目标端口       都是16位 二进制  一共有2^16应用程序 (65536)

序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会

按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始

序列号最大2^32约等于40亿CIJUOB(Z`UM`(}$TXNZE4LC

确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望

你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号

确认包的编号,对方包发过来的序号

数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这

个TCP报文段到底有多长。它指出TCP 报文段的数据起始处距离TCP 报文段的起始处有多远。该字段的单

位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节

保留:是没有使用

URG:表示本报文段中发送的数据是否包含紧急数据(紧急指针后面跟有效数字)

ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才

有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段

PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1

,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据

读走

RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,

然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP                报  文段称

SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;

当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连

接 的报

FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已

经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段

 

 

TCP协议PORT   服务器端口

传输层通过port号,确定应用层协议  prot number

tcp:传输控制协议,面向连接的协议;通信前需要建立虚拟链路;结束后拆除链路       0-65535

udp:User Datagram Protocol,无连接的协议     0-65535

IANA:互联网数字分配机构(负责域名,数字资源,协议分配)

0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的系统应用使用

22/tcp(ssh),   80/tcp(http),   443/tcp(https)

1024-49151:用户端口或注册端口,但要求并不严格,分配给程序注册为某应用使用

1433/tcp(SqlServer),  1521/tcp(oracle),   3306/tcp(mysql)  , 11211/tcp/udp(memcached)

49152-65535:动态端口或私有端口,客户端程序随机使用的端口

Windows  和liunx   查看端口号  通用 netstat  -no    /    -nt

TCP三次握手

@N$$PFM4FCU7OZ9UQQV9`IO

 

TCP四次挥手

U}M)6@Y~QZ2E3C[P4RYC6TK

UDP         用户数据协议,没有数字编号,数据包错误就在从新传输,性能好(Voice 语音, Video 视频  )

工作在传输层 ,提供不可靠的网络访问, 非面向连接协议 , 有限的错误检查 ,传输性能高, 无数据恢

复特性

UDP 包头

Q7RJV{Y4$M8%U%ML`U`8]_S

Intrenet 层

Internet    prot    (IP 协议)

Internet   Control   Message  Protocol  (ICMP 协议)

ICMP 协议 判断网络状态   ,向对面主机发送数据包,(可以把包调大,判断网络稳定性 ping  IP  -s  数                   字)

Internet  group  management  protocol  (IGMP协议)多播应用

address  resolution  protocol  (ARP协议  地址解析协议)广播应用

arp  -n  查看 处于TCP三系握手前执行拿到Mac地址

只能基于一个网络段(IP的地址运算)跨路由 数据联络层的MAC地址始终变化  ARP得到地址金星通讯

reverse  address  resolution  protocol  (RARP反地址解析协议)

RARP  与ARP刚好相反,用MAC地址查找IP地址 并且得到的地址是固定地址在(DHCP)获取地址

Internet             IP      协议特征

运行于OSI 网络层  ,面向无连接的协议  ,独立处理数据包  ,分层编址   尽力而为传输   无数据恢复功能

IP PDU 报头

KGUA)$T]3$DP[V10@`3}MUN

 

版本:占4位,指IP 协议的版本目前的IP协议版本号为4

首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节

区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服

务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用

总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535 字节.总长度必须不超

过最大传送单元MTU

标识:占16位,它是一个计数器,通常,每发送一个报文,该值会加1,也用于数据包分片,在同一个包的若干

分片中,该值是相同的

标志(flag):占3位,目前只有后两位有意义

DF:Don‘t Fragment,中间的一位,只有当DF=0 时才允许分片

MF:More Fragment,最高位,MF=1表示后面还有分片。MF=0 表示最后一个分片

片偏移:占12位,指较长的分组在分片后,该分片在原分组中的相对位置.片偏移以8个字节为偏移单位

生存时间:占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端

初始设置一个8 bit字段.推荐的初始值由分配数字RFC 指定,当前值为64.发送ICMP 回显应答时

常把TTL设为最大值255

一般Linux ttl=46    windows  ttl=128  路由器  ttl=255

用    echo  128  > /proc/sys/net/ipv4/ip_defuault_ttl    修改ttl值  (生存时间)

协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1

表示为ICMP 协议, 2表示为IGMP 协议, 6表示为TCP 协议, 17表示为UDP 协议

首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用CRC 检验码而采用简单的计算方法

源地址和目的地址:都各占4字节,分别记录源地址和目的地址

IP地址

它们可唯一标识IP 网络中的每台设备

每台主机(计算机、网络设备、外围设备)必须具有唯一的地址

 

有类地址分类

IP地址由两部分组成:

网络ID:  标识网络               每个网段分配一个网络ID

主机ID:  标识单个主机       由组织分配给各设备

IPv4地址格式:点分十进制记法

)(DE6WX}RG6Y05ET85YS%TM

A类:  0 000 0000 -0 111 1111: 1-127

网络数:126, 127      每个网络中的主机数:2^24-2     默认子网掩码:255.0.0.0     私网地址:10.0.0.0

B类:10 00 0000 -10 11 1111:128-191

网络数:2^14           每个网络中的主机数:2^16-2      默认子网掩码:255.255.0.0

私网地址:172.16.0.0-172.31.0.0

C类: 110 0 0000 -110 1 1111: 192-223

网络数:2^21          每个网络中的主机数:2^8-2        默认子网掩码:255.255.255.0

私网地址:192.168.0.0-192.168.255.0

D类:组播       1110 0000 -1110 1111: 224-239

E类:   240-255

无类地址分类

CIDR   无类域间路由  :网络ID和主机ID数量不确定  (32位  IPV4)

netmask  子网掩码

网络ID数  netmask对应的数是1

主机ID数 netmask对应的数字是0

按照有类分 A类是255.0.0.0

B类是255.255.0.0

C类是255.255.255.0

D和E是特殊类型 没有子网掩码

00000000          0

10000000          128

11000000           192

11100000            224

11110000             240

11111000            248

11111100            252

11111110             254

11111111             255

例:172.20.0.123   网络ID数为22     问  netmask?是多少

网络ID是22  就是22个1

主机ID是10个0(32-22=10)

255.255.252.0      8个1是255     剩下6个1是 252

172.20.0.123/22 是无类间路由表示法   比子网掩码更简洁,更方便

例:200.222.123.23/26  问 netmask?  主机数?

netmask  是 255.255.255.192

主机数   2^6-2=62

 

一个网络的主机数量=2^主机ID位数-2=2^(32位-网络ID位数)-2

划分子网:将一个大网划分 成小网(网络ID向主机ID借位)

大网:主机多(主机ID位数多网络ID数少)

小网:主机少(主机ID位数少网络ID数多)

合并超网:多个小网合并成大网(主机ID向网络ID借位)找共同点

可以提高网络访问效率,减少时间

 

公共IP地址:任何人都可以访问

@XM6)H(XOJR[]$~JX(LR

私有IP地址 :给局域网用,互联网不能访问,

9EZHSWX%AP)84]OQM(XW4QT

 

特殊地址

0.0.0.0  : 不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络

255.255.255.255 :  限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机

127.0.0.1~127.255.255.254:

本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包

224.0.0.0到239.255.255.255:

组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于

些特定的程序以及多媒体程序

169.254.x.x:

如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为

主机分配这样地址

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98541

(0)
祝韵杰-桃子祝韵杰-桃子
上一篇 2018-05-14
下一篇 2018-05-15

相关推荐

  • 内核配置和内核编译

    内核配置 /proc目录 内核把自己内部状态信息及统计信息,以及可配置参数通 过proc伪文件系统加以输出 sysctl命令 默认配置文件:/etc/sysctl.conf (1) 设置某参数 sysctl -w parameter=VALUE (2) 通过读取配置文件让设置的参数 生效;sysctl -p [/path/to/conf_file] (3) …

    Linux笔记 2018-05-11
  • selinux 和 awk的使用

    selinux 和 awk的使用

    Linux笔记 2018-05-15
  • 进程和计划管理

    进程 进程是运行中的程序。每个程序启动后都会创建一个或多个程序。 常用查看进程的命令 ps 默认只查看当前用户终端中打开的进程 ps aux 显示所有进程信息,包括非终端登录以及其他终端、用户打开的进程 top 在当前终端以交互式方式显示进程排名,及时跟踪CPU、内存等系统资源的使用情况,默认三秒刷新一次。 P键:根据CPU占用情况对进程进行排序 M键:根据…

    Linux笔记 2018-05-06
  • 第一周作业

    1、描述计算机的组成及其功能。 计算机由运算器,控制器,存储器,输入设备和输出设备五大部分组成。 (1)运算器的功能是用于完成算术运算、逻辑运算。负责计算机执行的所有数学与逻辑功能。 (2)控制器的功能是主要负责对程序所执行的指令进行分析,并协调计算机各部件进行工作计算机的所有 其他部件。 (3)存储器的功能是用于储存信息的设备,通常是将信息数字化后再利用电…

    Linux笔记 2018-05-11
  • Linux的学习之旅

      Linux的文件系统层级结构标准FHS image.png /etc=====和主机相关的系统配置文件 edit the configure /home===== 用户家目录 /usr======二层分层的目录。默认是最大的。 /dev=====设备文件 /media======挂载点和可移动的设备, /mnt=====临时挂载点 /var==…

    Linux笔记 2018-04-01
  • 计算机基础

    计算机基础与linux的常用命令

    2018-04-01