网络地址,tcp/udp的区别

来源:互联网 发布:软件外包开发协议 编辑:程序博客网 时间:2024/05/16 17:24

          今天复习了一下比较基础的网络知识,本来以前对网络这块就比较迷离。

       网络地址,众所周知就是用来标识计算机所在位置,并不是标识那一台计算机的名字,而是表明这台计算机和网络之间的关系,所以当这台计算机换了个地方以后,也要相应的改ip地址。

        网络地址占32位,分为网络地址和主机地址,网络地址用来标识计算机所在的网络,如果要在这个网络下建立子网的话,则就需要子网掩码,子网掩码也是32位的,1代表网络,0代表主机,这样的话就能有效的根据子网掩码把网络地址划分为不同的子网,可以很好的解决ip地址不足的问题,现在还有一种超网的技术,通过 ip地址:网络位数,来标明,这种技术也很好解决ip地址浪费的问题。比如一个c类地址,最多255台终端,如果没有用到这么多终端的话,很多就浪费了,而超网技术,通过改变网络所占的位数,很好的解决了这个问题。


          tcp/udp:

        当ip协议把数据打包发送到目地地址时,并不知道应该发送到计算机的那个应用程序,这时就需要一个端口(相当于一个队列)来表面数据应该放到哪里。

        在使用udp协议的时候,但是并不知道目标应用的程序的端口是多少,所以先必须和目标应用程序协商好一个端口号,而这个端口号也是有目标应用程序临时分配没有使用的端口号,协商好了以后,目标应用程序就把端口号告诉发送方,然后发送方开始向这个端口号发送数据包和自己的端口号,所以整个过程是单向的,不能同时进行,而且并不能保证发送出去的数据,对方能不能收到,只是向这个端口号发送数据。

        而使用tcp协议,是端到端得连接,就是发送方的ip和端口号,和接受方的ip和端口号是固定的,这样的话,就导致了两两连接,而且在发送方在发送之前,必须和接受方通过三次握手协议建立一个连接,发送方———>接受方,接收方——>发送方(判断是否连接上接受方),发送方——>接收方(判断是否连接上发送方),这样就判断了,双方是否都连接上了,如果连接上了,就可以同时互相发送数据。


        补充:sendto和recvfrom适用于UDP协议的数据包,recv和send适用于tcp协议。

原创粉丝点击