TCP/IP---我的理解和整理

简介

TCP/IP( Transmission Control Protocol/Internet Protocol),顾名思义,就是传输控制协议/网际协议。它是因特网的通信协议,是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。TCP/IP的工作原理,就是一个主机的数据要经过哪些过程才能发送到对方的主机上。 (图1)
在这里插入图片描述
TCP/IP 协议采用4层结构,分别是应用层、传输层、网络层和链路层, (图2)在这里插入图片描述

每一层都呼叫它的下一层所提供的协议来完成自己的需求。

每一层

(图3)
在这里插入图片描述
众所周知,接入网络的设备都必须安装网络适配器(网卡)。数据包必须是从一块网卡传送到另一块网卡
网卡地址即数据包的发送和接收地址。有了MAC地址以后,以太网广播数据包给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行比对:如果相同就做下一步处理,如果不同,就丢弃这个包

应用层
是最高层,为各种应用程序提供服务来保证通信。(即为应用程序提供通讯服务的各种协议(应用服务元素)。
传输层
分割并且组装上层提供的数据流,并且为它们提供从 端 到 端 的传输服务。
那么它是怎么区分不同应用程序的数据流的呢?
我们用端口号抽象表达应用程序和服务程序给它识别。
所以说,ip地址和端口号用来唯一地确定网络上数据的目的地。
网络层
IP协议
网络层引入了IP协议,制定了一套新地址(网络地址,也就是所谓的IP地址)。这样做是为了让我们能够区分两台主机是否同属一个网络。
为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。
(图4)
在这里插入图片描述
ARP协议
ARP,地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。
它发起请求数据包后进行图3基本操作。
ARP接收返回消息,以此确定目标机的MAC地址;与此同时,返回的MAC地址与对应的IP地址存入本机ARP缓存,并保留一定时间,以便下次请求时可以直接查询ARP缓存,节约资源。
ICMP协议
IP协议并不可靠(它不保证数据被送达),故保证数据送达的工作应该由其他的模块来完成。
其中一个重要的模块就是ICMP(网络控制报文)协议。ICMP是IP层的协议。当传送IP数据包发生错误,ICMP协议将会把错误信息封包,然后传送回给主机,给主机一个处理错误的机会。
链路层
链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收

三次握手

TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。
(图5)
在这里插入图片描述
用三次握手(Three-Way Handshake)来建立TCP连接
需要客户端和服务端总共发送3个包以确认连接的建立。
在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:
在这里插入图片描述
第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

四次挥手断开连接

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值