TCP和ARP

TCP是一个工作在传输层,面向连接的协议,一台计算机与另一台计算机通信就需要TCP协议,当然还有一个和它并列的一个协议可以使用,只是TCP更加稳定且常用.
TCP和ARP
捕获
上图为一台计算机与另一台计算机建立通讯的过程,它实际通信中传递的不止斜线上的信息.上面的SYN是同步号,
ACK为确认号.seq为序列号,ack为辅助的确认号
捕获
上面为建立通信时发送的TCP信息详细结构,ip首部为internet层添加的IP和mac地址信息.端口是在跨路由通信时使用到的,它并不在IP中,而是在TCP的首部,序列号表示本机发送的第几个数据包,在来回的通信中会有各自的序列号. 确认号,是在对方发送信息以后,记录对方序列号后加以得到的号码,再次发送时如果对方发现确认号正确就代表传输过程中没有丢包.数据偏移(字节),窗口(传播速率),校验和(计算校验发现错误),紧急指针,选项有(最大报文长度,窗口扩大,时间戳).
URG,ACK,PSH,RST,SYN,FIN都只有一位,0或1
URG表示是否紧急,ACK表示前面的确认号字段是否有效.TCP规定,建立连接后,ACK必须为1.
PSH提示接收方是否把缓存区数据提交上层应用
RST表示与主机连接是否有错误,否则重新建立连接,带有RST=1的标志的报文为复位报文段
SYN建立连接时使用,用来同步序号,和ACK连用.SYN=1,ACK=0,表示请求连接,SYN=1,ACK=1,表示同意建立接
FIN表示是否要关闭连接,带FIN的tcp报文段称为结束报文段
 连接时有三次握手,断开时还有四次挥手,两者发送的报文类似,只是通信机制有些差别.在已经建立联通时,发送的报文也是类似结构.
在两台计算机建立连接之前发动连接的计算机要知道需要连接的计算机是谁它们才可能通信,这个需要操使用者提供IP地址,然后才能获得mac地址,才能够通讯.这里涉及到一个问题为什么要使用到mac地址才能通讯,使用IP地址也能唯一确定一台计算机了,即使不在一个局域网中使用端口也能确定一台计算机.这主要和网络管理,和网络协议(TCP/IP)有关.关于这个问题网上有很多版本的讨论,我选择了一个版本的,反正TCP/IP协议中同时需要IP和mac地址才能通讯.
IP地址分为网络地址和主机地址两部分,在网络传输中便于快速寻找路由,并返回主机解析。而且,对于主机来说不是唯一性的。MAC是网卡物理地址,是每个网卡唯一地址。其中前6位16进制数代表网络硬件制造商的编号,它由IEEE(Istitute of Electrical and Electronics Engineers,电气与电子工程师协会)分配,而后3位16进制数代表该制造商所制造的某个网络产品(如网卡)的系列号。
当网卡更换的时候不必通知网管MAC地址更换,即可使用现有IP地址进行网络服务。
现在有很多计算机都是通过先组建局域网,然后通过交换机和Internet连接的。然后给每个用户分配固定的IP地址,由管理中心统一管理,这样为了管理方便就需要使用Mac地址来标志用户,防止发生混乱,明确责任(比如网络犯罪)。
ARP(Address Resolution Protocol)地址解析协议通信
如果在路由器一侧(在同一个广播域中),主机A广播(谁的ip是IPB)后主机B返回它的mac地址, A与B就能确定连接路径够建立连接.
如果不在同一侧,比如向主机C访问,广播没有回应证明目标计算机不在一个广播域中,那么会向网关(路由器)发信息,路由器回应它的mac地址,然后A再次发送{DST MAC:MAC1  SRC MAC:MACA DST IP:IPC SRC IP:IPA}  到路由器端口1,路由器处理的办法是向广播域中发广播(谁的ip是IPC),有C回应了它的mac地址,
然后端口2再次发信息给C{MACC  MAC2  IPC  IPA},机器C就知道A了,这样A和C就建立了连接 ,如果中间有多次路由就是多次经过上面过程
arp -n 显示局域网中mac地址和IP的对应关系
Windows中使用 arp -a
RARP:Reverse Address Resolution Protocol 反向地址转换协议
RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份
在计算机中有一个ARP表,在ARP中记录IP和mac地址的对应关系,它是在之前获取IP的mac地址之后记录下来的.
通过ARP表就能直接确定目标计算机,但是仍然需要确定路由路径,但是计算机的ARP表中信息保存时间很短(一般10分钟),路由路径依然存在,不用重新获取.
在TCP通讯中IP首部就包含自己的mac地址和IP和源的mac地址和IP地址

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

(0)
daishitongdaishitong
上一篇 2017-11-29
下一篇 2017-11-29

相关推荐

  • Linux发展史

    Linux发展史 本篇文章主要介绍Linux是什么,Linux是怎么来的,Linux能干些什么等 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它之所以如此受到人们的欢迎,是因为它开源,是因为它简洁,更因为它稳定。作为一个普通用户,或许你没接触过电脑的Linux系统,但…

    Linux干货 2016-10-14
  • redis主从复制(1)— 慢查询导致复制中断

    redis的异常行为是一件令人头疼的问题。redis提供的错误日志只提供了一些server的运行状态信息,而没有server在故障现场的操作日志,比如执行了什么命令,命令操作对象的数据结构信息。如果redis也有mysql的slow-log,那么很多性能和故障问题也很容易处理。1、redis rdb在redis2.8版本以前,redis主从数据复制在生产上存…

    Linux干货 2016-04-12
  • DNS高级应用之ACL和View

    一、环境准备:     1、准备三台主机,要求如下      (1) DNS服务器双网卡:eth0:192.168.10.203  eth1: 172.16.2.10       (2)测试机1双网卡: eth0: 172.16.…

    Linux干货 2015-06-01
  • 网络班26期-第1周课程作业

    1、描述计算机的组成及其功能? (1)CPU:计算机的大脑,计算机的运算,命令的控制功能,寄存器及缓存都由CPU功能承担; (2)内存:RAM,随机访问存储器,计算机的另一个核心功能,系统指令存放及运行的基础。 (3)输入设备:人工给计算机下指令的设备,例如鼠标,键盘等; (4)输出设备:计算机输出人工输入的执行命令的结果;例如,音响,显示屏等; …

    Linux干货 2017-01-10
  • shell脚本3——循环语句

    流程控制:      顺序执行      选择执行      循环执行 循环执行:      将某代码段重复运行多次      重复运行多少次:  &…

    Linux干货 2016-08-18
  • 第五周

    显示/boot/grub/grub.conf中以至少一个空白字符开头的行 egrep "^[[:space:]]+" /boot/grub/grub.conf 显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行 egrep "^#[[:…

    Linux干货 2016-09-19