您的位置:首页 > 理论基础 > 计算机网络

网络通信过程 及TCP/UDP 面向连接?

2017-01-24 18:08 363 查看
网络通信过程分析如下:
Tcp/ip体系结构分为4层结构:网络接口层、网络层、传输层和应用层。分层的体系结构便于系统的分层实现,分层管理,提高了系统的兼容性和应用的多样性,同时也方便了对计算机通信的研究和理解。在理解上,可以认为不同主机上的进程通信是在相同层次间进行通信。但计算机网络的实际工作则是遵循“下层协议是为上一层次的应用提供服务”的原则。用ie例分析说明。
ie进程运行在主机A上,通过路由器B,向服务器C发出浏览网页的请求。首先通过应用层http协议向c发出请求报文。套接字位于应用层和传输层之间,起到类似于一个门的作用。应用层将http报文发送到套接字中,通过套接字确定主机地址,源进程端口以及目的地址和目的进程的端口。http报文通过套接字后,进入下一层传输层。传输层的主要协议有tcp协议和udp协议,http报文使用tcp协议。按照tcp协议格式源端口和目的端口号被写入tcp报文段首部,http作为tcp报文段的数据部分封装。之后tcp报文进入网络层。按照ip协议的格式,源地址和目的地址被写入ip协议首部,tcp报文作为数据部分写入到ip数据报中。然后进入网络接口层。在网络接口层经过分析后,加上头部和尾部形成数据帧,数据以帧的形式在两个结点之间传输,在本例中即在A和B之间传输。数据传输的本质是以电信号进行传输。

数据帧由A向B传输,并由B接受。接收后,按照和刚才发送过程的相反次序进行处理。B是一个路由器,路由器中只有网络接口层和网络层两层结构。之前的报文被B的网络接口层接收后,去掉帧的头部和尾部后,将还原的ip数据报传输到网络层。在网络层通过路由中的路由表,比较源地址和目标地址后,向下一跳传输。在本例中,就是向服务器C传输。然后将ip数据报向下层即网络接口层,传递。同样,在网络接口层加上头部和尾部后封装成帧,并且以帧的形式传输到下一跳C。

数据帧在服务器C被接受后,首先被去掉头部和尾部,向上传递到网络层。在网络层去掉首部后,传递到传输层。在传输层去掉tcp报文的首部,交给服务器c的套接字。套接字按照目的端口号将数据分配给相应的应用层协议。经应用层http协议解析后,将数据分配给相应的进程,在本例中即分配给服务器程序。

服务器相应按照请求报文的内容,将请求的数据按照上述过程向客户传输。
TCP/UDP面向连接?

简单的说TCP与UDP的区别是有无连接状态。

TCP是有连接状态的,而UDP没有,所以TCP是一种比较安全的通讯协议,而UDP则比较方便

TCP127.0.0.1:10260.0.0.0:0LISTENING

TCP是传输协议TCP是主动连接网页什么的用TCP(貌似)

UDP也是传输协议UDP迂回连接QQ就用UDP(貌似)

127.0.0.1是本地回环地址

1026是端口

LISTENING是监听

TCP127.0.0.1:10260.0.0.0:0LISTENING

全意是监听TCP1026端口

0.0.0.0是没有东西为零

0端口就是没有。。。ING

TCP是面向连接的

UDP是面向无连接的

就是这种关系了

TCP(TransmissionControlProtocol,传输控制协议)

UDP(UserDatagramProtocol,用户数据包协议)

当IP包通过路由将数据传输到目的地时,会根据TCP或UDP包头中的源端口和目的端口信息,请求和获取不同的应用。也就是说,不管TCP还是UDP,都含有网络服务必须的源端口和目的端口信息,以建立和实现网络传输服务。这时,你的疑问就来了:既然都用于传输,为何要搞两个不同的协议呢?这就需要从网络中不同服务的需求来谈起。

在网络中,有些服务,如HTTP、FTP等,对数据的可靠性要求较高,在使用这些服务时,必须保证数据包能够完整无误的送达;而另外一些服务,如DNS、即时聊天工具等,并不需要这么高的可靠性,高效率和实时性才是它们所关心的。根据这两种服务不同的需求,也就诞生了面向连接的TCP协议,以及面向无连接的UDP协议。

这里的连接(Connection)和无连接(Connectionless)是网络传输中常用的术语,它们的关系可以用一个形象地比喻来说明,就是打电话和写信。

打电话时,一个人首先必须拨号(发出连接请求),等待对方响应,接听电话(建立了连接)后,才能够相互传递信息。通话完成后,还需要挂断电话(断开连接),才算完成了整个通话过程。写信则不同,你只需填写好收信人的地址信息,然后将信投入邮局,就算完成了任务。此时,邮局会根据收信人的地址信息,将信件送达指定目的地。

我们可以看到,这两者之间有很大不同。打电话时,通话双方必须建立一个连接,才能够传递信息。连接也保证了信息传递的可靠性,因此,面向连接的协议必然是可靠的。无连接就没有这么多讲究,它不管对方是否有响应,是否有回馈,只管将信息发送出去。就像信件一旦进了邮箱,在它到达目的地之前,你没法追踪这封信的下落;接收者即使收到了信件,也不会通知你信件何时到达。在整个通讯过程中,没有任何保障。因此我们常说,面向无连接的协议也是不可靠的。当然,邮局会尽力将右键送到目的地,99%的情况信件会安全到达,但在少数情况下也有例外。

面向连接的协议比面向无连接的协议在可靠性上有着显著的优势,但建立连接前必须等待接收方响应,传输信息过程中必须确认信息是否传到,断开连接时需要发出响应信号等,无形中加大了面向连接协议的资源开销。具体到TCP和UDP协议来说,除了源端口和目的端口,TCP还包括序号、确认信号、数据偏移、控制标志(通常说的URG、ACK、PSH、RST、SYN、FIN)、窗口、校验和、紧急指针、选项等信息,UDP则只包含长度和校验和信息。UDP数据报比TCP小许多,这意味着更小的负载和更有效的使用带宽。许多即时聊天软件采用UDP协议,与此有莫大的关系。

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。用TCP还是UDP,那要看你的程序注重哪一个方面?可靠还是快速?


TCPUDP是两个协议,简单的说,TCP连接要对方确认的,而UDP却不需要对方确认收到包,所以TCP连接更加安全,但是一般播放网络流媒体使用UDP协议


传输层协议一般有TCP和UDP,TCP为可靠传输,协议本身会保证数据传输的可靠,但为此会付出很多额外的网络开销。UDP为不可靠传输,所以传输效率比较高,本端只负责发送数据,不保证对端能否收到。对于UDP,可靠性可以在应用层实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络