网络通信和tcp/ip协议 2018-07-06

2018-07-06  本文已影响0人  Ian952700

网络通信

使用网络把多方连接在一起,然后进行数据传递,即把数据从一方传递给另外一方为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能

所谓的网络编程就是,让在网络中不同的电脑上的软件能够进行数据传递,即网络中不同主机进程之间的通信

利用ip地址,端口,协议就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互

TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP通信需要经过创建连接、数据传送、终止连接三个步骤

TCP特点

1 面向连接

通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。

双方间的数据传输都可以通过这个连接进行。

完成数据交换后,双方断开此连接,以释放系统资源。

这种连接是一对一的

因此TCP不适用于广播的应用程序,基于广播的应用程序请使用UDP协议

2 可靠传输

1)TCP采用发送应答机制

TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功

2)超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。

TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

3)错误校验

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

4) 流量控制和阻塞管理

流量控制用来避免主机发送得过快而使接收方来不及完全收下。

TCP与UDP的不同点

面向连接;有序数据传输;重发丢失的数据包;舍弃重复的数据包;无差错的数据传输;阻塞/流量控制

tcp服务器

在程序中,如果想要完成一个tcp服务器的功能,需要的流程如下:

socket创建一个套接字;

bind绑定ip和port;

listen使套接字变为可以被动连接,即开启监听;

accept等待客户端的连接;

recv/send接收发送数据

 tcp的三次握手

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

tcp的四次挥手

由于TCP连接是双向的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

第一次挥手: Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

第二次挥手: Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入CLOSE_WAIT状态。

第三次挥手: Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手: Client收到FIN后,Client进入TIME_WAIT(TIME_WAIT等待2MSL时间,范围在1-4分钟)状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

HTTP协议

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是互联网上应用最为广泛的一种网络协议,用于web服务器与浏览器之间传输超文本数据的协议

HTTP是一个基于TCP/IP通信协议来传递数据(HTML网页文件, 图片文件,视频文件, 查询结果等等)

html:(Hyper Text Mark-up Language)超文本标记语言,用html来编写网页

通俗的讲: HTTP是在网络上传输HTML网页的协议,用于浏览器和服务器的通信。

网络协议:

1、网络接口层(物理层、数据链路层):包括传输介质(网线)、计算机中对应的网络接口卡等,其实这一层tcp/ip协议是没有定义的,给其上层"网络层"提供访问接口.

2、网络层(互联网层):主要用IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由

3、运输层:主要为两台主机上的应用提供端到端的通信.

4、应用层:为用户提供所需的服务,比如http服务,ftp服务,smtp服务等.

上一篇下一篇

猜你喜欢

热点阅读