美文网首页
网络通信和tcp/ip协议 2018-07-06

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

作者: Ian952700 | 来源:发表于2018-07-06 21:31 被阅读0次

    网络通信

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

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

    利用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服务等.

    相关文章

      网友评论

          本文标题:网络通信和tcp/ip协议 2018-07-06

          本文链接:https://www.haomeiwen.com/subject/vgabuftx.html