web知识(八)—— 网络模型、socket、互联网数据交互理解

一.什么是网络编程?网络编程就是编写程序使两台联网的计算机相互交换数据。


二.什么是socket?
socket 的原意是“插座”
在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式
通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
套接字种类与优缺点:
套接字有很多,我们一般常说的是Internet 套接字:流格式套接字(SOCK_STREAM)、数据报格式套接字(SOCK_DGRAM)
TCP 是面向连接的传输协议】,【建立连接时要经过三次握手,断开连接时要经过四次握手】,中间传输数据时也要回复 ACK 包确认,多种机制保证了数据能够正确到达,不会丢失或出错。
UDP 是非连接的传输协议】,没有建立连接和断开连接的过程,它只是简单地把数据丢到网络中,也不需要 ACK 包确认。
优缺点比较:
1.如果只考虑可靠性,TCP 的确比 UDP 好。
但 UDP 在结构上比 TCP 更加简洁,不会发送 ACK 的应答消息,也不会给数据包分配 Seq 序号,所以 UDP 的传输效率有时会比 TCP 高出很多,编程中实现 UDP 也比 TCP 简单。
2.UDP 的可靠性虽然比不上TCP,但也不会像想象中那么频繁地发生数据损毁,在更加重视传输效率而非可靠性的情况下,UDP 是一种很好的选择。比如视频通信或音频通信,就非常适合采用 UDP 协议
通信时数据必须高效传输才不会产生“卡顿”现象,用户体验才更加流畅,如果丢失几个数据包,视频画面可能会出现“雪花”,音频可能会夹带一些杂音,这些都是无妨的。
3.与 UDP 相比,TCP 的生命在于流控制,这保证了数据传输的正确性
最后需要说明的是:TCP 的速度无法超越 UDP,但在收发某些类型的数据时有可能接近 UDP。例如,每次交换的数据量越大,TCP 的传输速率就越接近于 UDP。


三.什么是网络模型?
简而言之就是进行数据封装的。
OSI 模型7层、 TCP/IP 模型4层
应用层(应用层、表示层、会话层)【http、ftp】——传输层【tcp、udp】——网络层【ip】——网络接口(数据链路层、物理层)
说明:
电脑发送数据(应用层————>网络接口层)
我们平常使用的程序(或者说软件)一般都是通过【应用层来访问网络】的,【程序产生的数据会一层一层地往下传输,直到最后的网络接口层,就通过网线发送到互联网上去了】。
【数据每往下走一层,就会被这一层的协议增加一层包装,等到发送到互联网上时,已经比原始数据多了四层包装。】整个数据封装的过程就像俄罗斯套娃。
服务电脑端接收数据(网络接口层————>应用层)
【当另一台计算机接收到数据包时,会从网络接口层再一层一层往上传输,每【传输一层就拆开一层包装】,直到最后的应用层,就得到了最原始的数据,这才是程序要使用的数据】。
我们所说的【 socket 编程,是站在传输层的基础上,所以可以使用 TCP/UDP 协议】,但是不能干「访问网页」这样的事情,因为【访问网页所需要的 http 协议位于应用层】。


四/如何找到指定的一台计算机?
对于目前广泛使用 IPv4 地址,它的资源是非常有限的,一台计算机一个 IP 地址是不现实的,往往是一个局域网才拥有一个 IP 地址。
在茫茫的互联网海洋中,要找到一台计算机非常不容易,有三个要素必须具备,它们分别是 IP 地址、MAC 地址和端口号
socket分为服务端与客户端,可以使用c、java等完成相关的编程。

参考链接: java socket服务端与客户端https://www.cnblogs.com/mingforyou/p/3258418.html;
参考链接: socket学习:http://c.biancheng.net/view/2123.html;

posted @ 2021-02-18 22:27  对月当歌  阅读(206)  评论(0)    收藏  举报