개인 공부

파이썬 네트워크 프로그래밍(1)

Roronoa 2023. 4. 25. 01:33
반응형

네트워크 프로그래밍

호스트 상호간 데이터 전송

통신과정

통신과정

SYN : 나 접속할게(client ⇒ server)

SYN, ACK : SYN message 응답, 응 들어와

ACK : ㅇㅋ, 잘 도착함

소켓(Socket)

소켓

Network interface : MAC주소(고유한 ID)

IP : 여러개 부여 가능!!, HOST를 구분

PORT : 애플리케이션 구분

Socket : 애플리케이션 안에서 클라이언트들을 구분

 

TCP Communication

TCP Communication

bind() : address와 소켓을 연결(특정 ip의 특정 port를 지정)

listen() : 클라이언트로부터의 연결을 기다림(기다림의 시간...)

connect() : 서버로 연결 접속(ip와 port번호를 넣어서 서버로 접속)

accept() : 클라이언트로부터 연결을 허가(드디어 왔구나!!, 어서 오시오)

recv() : 데이터 받기

send() : 데이터 보냄

close() : 연결 중단

 

TCP : 전송 보장, 앞에 패킷이 전달이 되어야지 뒤에 패킷을 전달함, 데이터 전달 속도 늦음, 신뢰성

UDP : 패킷을 보내고 신경을 안써서 다음 패킷 바로 보냄

 

TCP 공격

Syn flooding

Ack storm


사용 함수

socket.gethostname() : Return host name

socket.gethostbyname() : Return IP address

binascii.hexlify() : 16진수 문자열 hexstr로 표현된 바이너리 데이터를 반환

socket.getservbyport(port번호, 프로토콜 이름) : 서비스 이름 찾기

gettimeout() : Blocking mode

encode() : String to Byte

decode() : Byte to String

setsockopt() : 기본 소켓 버퍼 크기 변경

 

TCP 소켓 : 블로킹 모드가 기본값

논블로킹 모드 : 서버로부터 응답을 무한정 기다리지 않고 연결 과정을 취소할 수 있는 멈춤 기능

 

NPT(Network Time Protocal) : 시간 서버와 동기화하는 프로토콜

NTP 서버가 제공하는 정확도의 시간 정보가 필요없을 때 SNTP(Simple Network Time Protocal) 사용


Select

select : 싱글쓰레드로 다중 I/O를 처리하는 멀티플렉싱 통지모델의 가장 대표적인 방법

파일 디스크립터의 상황을 파악

    - 해당 파일 디스크립터가 I/O 준비 되면

    - 그 파일 디스크립터가 할당받은 커널 Buffer에 데이터 복사

 

Epoll

select의 한계로 등장

select의 한계 : select가 모든 fd를 순회하면서 recv()를 호출하는 방법보다 좋음

epoll : 관찰 대상인 fd들의 정보를 담은 저장소를 직접 운영체제가 담당

    - 전체 파일 디스크립터에 대한 반복문을 사용하지 않음

    - 커널에게 정보를 요청하는 함수를 호출할 때마다 전체 관찰 대상에 대한 정보를 넘기지 않음


async / await : 동기적으로 처리

fcntl : file control

    - 파일 및 레코드 잠금 함수

    - 읽기 잠금 : 여러 프로세스가 읽기 공유

    - 쓰기 잠금 : 하나의 프로세스만 쓰기

fork : 새로운 프로세스 생성

 

반응형

'개인 공부' 카테고리의 다른 글

정보보호 관리체계 구축(1)  (0) 2023.04.25
기초 파이썬 지식  (0) 2023.04.25