1.计算机网络的定义
计算机网络是若干个在地理位置上不同的,具有独立计算能力的计算机和其他电子设备,通过各种各样的通信系统相连接形成的实现信息传输资源共享的系统。通过通讯的范围可分为,局域网(LAN),城域网(MAN),广域网(WAN)。
2.计算机网络模型
在计算机网络中的通信是遵守一定的互联网协议,在通信的同时一定会涉及到数据的传输,其实学过计网的人都知道,数据的传输是通过几层模型来一步步进行传输的,在每一层都会封装自己的数据形式,传到另外一通讯方的时候,就会一层一层地把数据标识拆开,拿到里面的数据,并且每一层之间的数据类型都是互不相互干扰的。那么就计算机网络中分为几层呢?每一层又有什么协议呢?现在主要应用的是TCP/IP模型,共有五层分别是:
1.应用层
2.运输层
3.网络层
4.数据链路层
5.物理层
各种协议我们不细讲,数据的传输是一步步从应用层传输下来,在一步步从底层向上层进行传输。
3.Socket
在本次的编写中主要讲解socket网络编程,套接字有IP地址和端口号组成而成。
我们所写的套接字编程,能基于两种机制,一种是基于TCP的字节流套接字,另外一种是基于UDP的数据分组套接字编程。两者之间最大的区别就是前者是为两个端系统之间的数据流动提供可靠数据传输,后者不对数据提供任何保证。这里我们选择面向连接的TCP协议的套接字编程。
4.三次握手
第一次握手:客户端会发送一个SYN标记为1的包,并随机取了一个随机数SEQ©=x为自己的初始序列号,发送完后进入SYN-SEND状态。
第二次握手:服务端收到了SYN=1的标记,知道了Client端想要和自己建立连接,此时进入LISTEN状态。回包含确认标记ACK(ACK=SEQ©+1),一个建立连接标记SYN=1,并且随机产生自己的序列书SEQ(s)=y的包,发送完后进入SYN-RECV状态。
第三次握手:客户端收到服务端发来的包之后,检查ACK的值是否等于SEQ©+1以及SYN是否为1,确认无误后,再发送包含一个ACK=SEQ(s)+1,一个SEQ=z,此时双方进入establish状态,TCP连接建立。
打个比方就相当于电视上某位侠客的扔勾子准备爬楼,当钩子扔上去,不得拉一拉确定是否抓稳了才开始攀爬,感觉是这个样子。
5.为什么要三次握手呢?
像我们上面打的比方说的如果不进行三次握手那等会钩子钩没钩稳都不知道,上去就是送人头。当然在计算机网络中使用三次握手就是为了保证数据的即有即传,不造成网络资源的浪费。如果只用一次确认就可能导致的结果是造成网络资源的浪费。比如第一次请求A发过去,堵在网络中,然后又发一个请求B过去,没堵,服务段回了请求报文。然后A慢慢来到了服务端,又发一个请求报文回去并且等待数据传输,但是这时候由于机制问题客户端认为A已经丢失了,这就造成了网络资源的浪费。
6.四次挥手
具体的发送描述就不讲了,大家根据图也能大概判断出来。以上就是基本原理。