TCP协议笔记

 TCP/IP参考模型

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能,一个协议族,例如TCP/IP是一组不同层次上的多个协议组合,TCP/IP通常被认为是一个四层协议系统。

链路层

链路层也称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,他们一起处理与电缆或其他任何传输媒介的物理接口细节,链路层有ARP协议和RARP协议

ARP协议为地址解析协议,RARP协议为逆地址协议,都是某些网络接口(以太网、令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。

网络层

网络层也成为互联网层,处理分组在网络中的活动,例如分组的选路,在TCP/IP协议族中,网络层协议包括网际协议(IP协议),Internet互联网控制文协议(ICMP协议),Internet组管理协议(IGMP)协议。

ICMP是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息,虽然ICMP被IP所使用,但是应用程序也有可能访问它,我们可以分析俩个流行的诊断工具,Ping和traceroute。

IGMP是Internet组管理协议,它的作用是把一个UDP数据报播到多个主机

运输层

运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。

TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。

UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供

TCP和UDP都使用IP作为网络层协议,二者都使用IP作为网络协议。TCP是面向连接的,可靠的传输协议,适用于对安全性和稳定性要求高的数据传输。UDP是面向无连接的,不可靠的传输协议,适用于网络负担重、对传输延时要求低的数据传输。

TCP的三次握手

假设网络中俩台机器分别是客户端A、服务器B之间建立TCP连接。

第一次握手:A建立传输控制模块TCB(传输控制块的数据结构把发给不同设备的数据封装起来),发送SYN报文包(报文段首部的同步位SYN=1表示请求B建立连接,以及一个序列号saq=x表示数据段的序号),此时A进入syn_send状态,等待B的确认

第二次握手:B收到A的syn报文包,需要给客户端发送ACK确认报文包,同时B也要向A发送一个SNY报文包,所以也就是向客户端发送SYN报文包加ACK报文包(同步位SYN=1表示同步位等于1代表收到了A的请求,确认位ACK=1表示确认位为1代表B同意建立连接,序列号seq=y表示B发送的数据段序号,确认号ack=x+1表示确认号,希望A回复的报文序号为x+1),此时B进入syn_rcvd状态

第三次握手:A收到SYN报文包加ACK报文包,向B发送ACK确认包(确认位ACK=1表示B同意连接,序列号seq=x+1表示数据段的序号+1,确认号ack=y+1表示在正式传输数据时,第一个包的序号为y+1),客户端进入Established状态,等B收到A发送的ACK包,也会进入Established状态,完成三次握手

(其中ack表示确认号,ACK表示确认位)

补充:推送位PSH: 为1时,接收方应该尽快将这个报文段交给应用层,不用等缓存填满,优先级更高,报文段优先交给应用层。
           复位RST: 为1时,表明TCP连接中出现严重差错,需要释放连接后,重建连接。
           同步位SYN: 为1时,用来发起/确认一个连接。
           终止位FIN: 为1时,表明发端完成发送任务,要求释放连接。
           窗口:接收窗口,即允许对方发送的数据量。
           检验和:检验首部+数据
           紧急指针:URG为1时有效,指出本报文段中紧急数据的字节数(从数据的第一个字节开始)。
           选项:最大报文段长度MSS(Maximum Segment Size):发送方告诉接收方,自身缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。

           窗口扩大:占 3 字节,其中有一个字节表示移位值 S.新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小

           时间戳:占10 字节,其中最主要的字段时间戳值字段(4字节)和时间戳回送回答字段(4字节)

           选择确认:接收方收到了和前面的字节流不连续的两字节。如果这些字节的序号都在接收窗口之内,那么接收方就先收下这些数据,但要把这些信息准确地告诉发送方,使发送方不要再重复发送这些已收到的数据。

    填充:这是为了使整个首部长度是 4 字节的整数倍。

TCP四次挥手

    客户端发送连接释放报文段,停止发送数据。结束位FIN=1,表明要释放报文段,序号seq=u,假设上一个报文段序号为u-1。
    服务器端回复一个确认报文段,客户到服务器这个方向的连接就释放了——半关闭状态。确认位ACK=1,序号seq=v,假设上一个报文段序号为v-1,确认序号ack=u+1。
    服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。结束位FIN=1,确认位ACK=1,序号seq=w(服务器端上次发送的数据序号为v~w-1),确认序号ack=u+1(因为客户端未发送数据)。
    客户端回复一个确认报文段。确认位ACK=1,序号seq=u+1,确认序号ack=w+1。

ESTABLISHED:建立连接成功,通信中。

应用层

应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:Telnet 远程登录。

FTP 文件传输协议。

SMTP 简单邮件传送协议。

SNMP 简单网络管理协议。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值