网络编程基础

2018-05-31  本文已影响10人  小芳姑娘2012

网络七层协议

HTTP协议

HyperTextTransferProtocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议,HTTP 是一个应用层协议,由请求和相应构成,是一个标准的客户端服务器模型。

C/S模式

Client 和 Server 常常分别处在相距很远的两台计算机上,Client 程序的任务是将用户的要求提交给 Server 程序,再将 Server 程序返回的结果以特定形式显示给用户;Server 程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序

网络通信过程

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN+RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次状态。


image.png

常见的问题

TCP和UDP的区别

• TCP是面向连接的,建立连接需要经历三次握手,保证数据正确性和数据顺序
• UDP是非连接的协议,传送数据受生成速度,传输带宽等限制,可能造成丢包
• UDP一台服务端可以同时向多个客户端传输信息
• TCP报头体积更大,对系统资源要求更多

socket连接和http连接的区别

简单说,你浏览的网页(网址以http://开头)都是http协议传输到你的浏览器的, 而http是基于socket之上的。socket是一套完成tcp,udp协议的接口。
HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的
tcp协议: 对应于传输层
ip协议: 对应于网络层
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
http连接:http连接就是所谓的短连接,即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉;
socket连接:socket连接就是所谓的长连接,理论上客户端和服务器端一旦建立起连接将不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该连接以释放网络资源。所以当一个socket连接中没有数据的传输,那么为了维持连接需要发送心跳消息~~具体心跳消息格式是开发者自己定义的
我们已经知道网络中的进程是通过socket来通信的,那什么是socket呢?socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),这些函数我们在后面进行介绍。

上一篇 下一篇

猜你喜欢

热点阅读