网络编程——TCP协议socket
Posted linagcheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程——TCP协议socket相关的知识,希望对你有一定的参考价值。
TCP协议与socket套接字
一、TCP协议
1、可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
2.(1)三次握手建链接
(2)四次挥手断开链接
(3)tcp协议的状态
(4)syn洪水攻击与半连接池
3、(1)三次握手建立链接、四次挥手断开链接(各种状态)
(2)syn洪水攻击与半连接池
syn洪水攻击:就是让服务器资源耗尽,无法提供正常的服务,间接地拒绝
半连接池:暂时存放请求,用于限制请求个数,但是不限制连接个数
二、socket套接字
1、socket层
2、什么是socket
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。Socket是封装好TCP/IP协议的接口。
3、socket工作流程
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束
from socket import socket, AF_INET, SOCK_STREAM IP = ‘127.0.0.1‘ PORT = 8888 ADDRESS = (IP, PORT) BUFSIZE = 1024 # 1.创建客户端socket对象 cli_socket = socket(AF_INET, SOCK_STREAM) # 2.连接服务器 cli_socket.connect(ADDRESS) # 3.发收数据 cli_socket.send(‘hello‘.encode(‘utf-8‘)) # 只能以字节类型发送 data = cli_socket.recv(BUFSIZE) print(data.decode(‘utf-8‘)) # 关闭客户端连接 cli_socket.close()
以上是关于网络编程——TCP协议socket的主要内容,如果未能解决你的问题,请参考以下文章