TCP/IP Transmission Control Protocol /Internet Protocol
TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议
和ISO参考模型的分层有对应关系
应用层 (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 包头
源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时
刻能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目
标端口是用16位表示的,可推算计算机的端口个数为2^16个
0-15 是源端口 16-31是目标端口 都是16位 二进制 一共有2^16应用程序 (65536)
序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会
按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始
序列号最大2^32约等于40亿
确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。也就是告诉发送发:我希望
你(指发送方)下次发送的数据的第一个字节数据的编号是这个确认号
确认包的编号,对方包发过来的序号
数据偏移:表示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三次握手
TCP四次挥手
UDP 用户数据协议,没有数字编号,数据包错误就在从新传输,性能好(Voice 语音, Video 视频 )
工作在传输层 ,提供不可靠的网络访问, 非面向连接协议 , 有限的错误检查 ,传输性能高, 无数据恢
复特性
UDP 包头
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 报头
版本:占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地址格式:点分十进制记法
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地址:任何人都可以访问
私有IP地址 :给局域网用,互联网不能访问,
特殊地址
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