谢希仁计算机网络5

来源:互联网 发布:未妨惆怅是清狂 知乎 编辑:程序博客网 时间:2024/06/06 00:06

运输层(提供应用进程之间端到端的逻辑通信并对接收到的报文进行差错检测)
两大协议:TCP UDP
UPD在传输数据之前不需要先建立连接,远地主机运输层收到UDP报文段之后,不需要任何确认,虽然UDP不可靠,但是却很有效率
TCP提供面向连接的服务,数据传送结束后要释放连接,TCP不提供多播或广播服务,所以TCP开销较大
这里写图片描述

分用和复用:
这里写图片描述

为解决主机之间应用进程的识别问题,在运输层使用协议端口号(软件端口),TCPIP用十六位的端口号标志一个端口,有源端口和目的端口两个重要字段

端口号分为两大类:服务器端使用的端口号,客户端使用的端口号

UDP
特点:无连接,不保证可靠交付,面向报文,无拥塞控制,支持单播,多播,广播的交互通信,首部开销小(8字节)

TCP
特点:面向连接(先建立连接,数据传输完毕后释放连接,每条TCP链接只能有两个端点(点对点)),可靠服务,提供全双工通信(双方进程任何时候都能通信),面向字节流(TCP把应用程序传来的数据看成无结构的字节流)。

面向连接和非面向连接的服务的特点是什么?
面向连接的服务,通信双方在进行通信之前,要先在双方建立起一个完整的可以彼此沟通的通道,在通信过程中,整个连接的情况一直可以被实时地监控和管理。
非面向连接的服务,不需要预先建立一个联络两个通信节点的连接,需要通信的时候,发送节点就可以往网络上发送信息,让信息自主地在网络上去传,一般在传输的过程中不再加以监控。

TCP的连接
每个TCP连接有两个端点,那端点是什么呢?是套接字。套接字的定义如下:端口号拼接到IP地址就构成了套接字,所以:
这里写图片描述

TCP连接的三个阶段
连接建立,数据传送和连接释放
三次握手连接
这里写图片描述
这里写图片描述
第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
是否可以两次握手
不可以,原因如下:
这里写图片描述

TCP的连接释放
这里写图片描述

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

0 0
原创粉丝点击