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 14:00
下一篇 2017-11-29 23:50

相关推荐

  • Lua简明教程

    这几天系统地学习了一下Lua这个脚本语言,Lua脚本是一个很轻量级的脚本,也是号称性能最高的脚本,用在很多需要性能的地方,比如:游戏脚本,nginx,wireshark的脚本,当你把他的源码下下来编译后,你会发现解释器居然不到200k,这是多么地变态啊(/bin/sh都要1M,MacOS平台),而且能和C语言非常好的互动。我很好奇得浏览了一下Lua解释器的源…

    Linux干货 2016-08-15
  • Shell编程(1)

    Shell编程:     编程语言:机器语言、汇编语言、高级语言         高级语言:             静…

    Linux干货 2016-08-18
  • 18文本处理工具sed

    18文本处理工具sed     sed,全称Stream EDitor,是一种流编辑器,它一次处理一行内容,但是它构思巧妙,功能强大,是运维工作中必不可少的文本处理工具,也是因为这样,被称作文本处理三剑客之一。     sed在处理时,把当前处理的行李存储在临时缓冲区中,这个区域被称作“模式空间pa…

    Linux干货 2016-08-12
  • linux文件管理

    目录创建删除,软硬链接的区别和注意,file命令的使用,工作中遇到一些情况的处理方法

    2017-11-18
  • 运维工程师技能需求排行

    这是我今天在拉勾网搜索运维,翻完了4四页也招聘信息之后得到的,我的目的是想要看看之后的学习,哪个更应该成为重点,有些在我意料之中,有些还真的没想到,算是努力了一个小时的收获吧,分享给大家。
    注意:其中的看法仅代表个人观点,很多都是依靠我自己的学习经验和工作经验累积的

    Linux干货 2017-12-12
  • Windows和Linux关于一块网卡绑定多个网络地址的解决之道

    Windows和Linux关于一块网卡绑定多个网络地址的问题解决之道   在不同场合用不同ip地址访问网络,而且都是固定ip。是一件很头疼的问题。不过,Windows和Linux系统都提供了解决方法。接下来我们先谈Windows系统下操作,再说Linux如何操作。 一、Windows设置   1. 我以Windows7为例,首先鼠标左键点击你电脑左下角有网络…

    Linux干货 2016-09-07