程序员

传输模型和套接字

2018-12-14  本文已影响0人  梦捷者

1、传输模型

注意:TCP/IP协议不是TCP和IP两个协议的合称,而是指整个因特网中的TCP/IP协议的合称。

2、TCP协议

(1)TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。

(2)建立连接模式(三次握手)

(3)断开连接模式(四次挥手)

3、UDP协议

(1)UDP协议是无连接的、不可靠的协议。它只管发数据,不管收不收的到数据。

(2)UDP协议和TCP协议的比较:

           a、UDP协议是不安全的,但是效率高。(不保证数据的完整性)   

            b、TCP协议是安全的,但效率不高。(保证数据的完整性)

(3)TCP协议中如果数据丢失会进行重发,并且打包数据进行传输数据,但是UDP协议不会这样进行。

注意:互联网中主要传输的两个协议是UDP协议和TCP协议。

4、IP地址和端口

(1)IP地址

            a、概念

             IP地址是互联网协议地址,IP地址是是用来给Internet的电脑编号。

            b、IP地址格式

              IP地址是一个32位的二进制数,通常用点分十进制来表示。IP地址由网络地址和主机地址组成。

           c、按网络规模分类

             A类地址(大型网络)、B类地址(中型网络)、C类地址(小型网络)

           d、按照用途分类

             公有地址和私有地址。公有地址是直接在互联网上使用的IP地址;私有地址是局域网中使用的地址。(A类私有地址的范围是10.0.0.1~10.0.0.254,B类私有地址的范围是172.16.0.1~172.31.255.254,C类私有地址的范围是192.168.0.1~192.168.255.254)

(2)端口

            a、分类可以分为虚拟端口和物理端口

            虚拟端口指计算机内部或交换机内部的端口、不可见的。(比如计算机中的80端口、21端口、23端口)

             物理端口又被称为接口,是可见端口。(比如RJ45网口)

注意:计算机用整数表示端口;一台电脑有65536个端口,范围是0~65535.

5、套接字

(1)定义

              a、套接字是基于TCP、UDP协议的一个接口(接口中封装实现相应的的功能)。

              b、实现程序在网络中的通信。Socket是实现网络通信的基本技术之一。

              c、大多数网络软件是基于Socket来进行实现的。

              d、在进行通信之前,必须先要创建套接字对象。

(2)python中使用套接字

   代码实例(创建一个简单的同步阻塞并发服务器):

    客户端代码:

    import Socket

    client=Socket.socket()

    client.connect(('填写服务器的地址',服务器的端口号))

    while True:

            data=input(">>>>>")

            if data=='q':

                        exit()

             else:

                        client.send(data.encode("utf-8"))

                        res=client.recv(1024)

                        print(res.decode("utf-8"))

    client.close()

    服务端代码:

    import Socket

    tcp_server=Socket.socket()

    tcp_server.bind((' ',用一个端口号来指定服务器))

    tcp_server.listen(5)

     while True:

                    conn,adrr=tcp_server.accept()

                     while    True:

                                res=conn.recv(1024)

                                 if   res:
                                             print(res)

                                             conn.sebd(res)

                                   else:

                                            conn.close()

                                            break

上一篇下一篇

猜你喜欢

热点阅读