개발 | Development

PYTHON | 네트워크 프로그래밍 [PART 1]

건우Sec 2024. 9. 10. 21:18

https://www.youtube.com/watch?v=SimNmTciQTs

 

이분 강의 영상에 첫 파트인 영상을 보고 기록하였습니다.

 

socket 이란? 

 

소켓은 네트워크 통신을 위해 사용해주는 네트워크 인터페이스이다.

 

쉽게 말해

 

우린 메세지와 전화로 대화를 주고받는다면

 

컴퓨터들은 소켓 이라는걸 사용해 데이터를 주고받는다

 

주로 소켓은 TCP/IP 프로토콜을 이용해 연결을 주고받는다

 

 

파이썬 socket 이용한 사이트 ip 알아내기

 

import socket

import sys

 

 

 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

 

여기서 socket.AF_INET  IPV4 를 의미하며 

 

IP 주소라 생각을 하면 된다.

 

 socket.SOCK_STREAM   은   TCP (Transmission Control Protocol)  를 의미한다.

 

여기서 TCP/UDP 이란 ?

TCP 는 컴퓨터 전송체계이며 전송 중에서도 오류가있는지 체크후 데이터를 재전송하여 소켓중에서도 가장 안전한 데이터 전송방법이다

 

또한 UDP 도 있는데 UDP 가 보내는 데이터와 TCP 가 보내는 데이터가 다르다

 

TCP 는 안전하게 데이터를 전송해 컴퓨터에 전송을 하지만

 

UDP 는 전송중에 연결을 성립하지 않으며 

 

재전송과 과정 그딴거 필요없이 노빠꾸로 빠르게 전송한다는게 특징이다

 

 

ping 을 떄리면 저렇게 사이트에 IPV4 가 나오는데

 

파이썬에서도 구현이가능하다.

 

 

ip = socket.gethostbyname('www.google.com')

 

여기서 변수 ip =socket.gethostbyname 으로 호스트의 이름을 가져오기로 구글사이트에 IPV4 를 가져온다.

 

실행을 누르면 구글에 IPV4 정보를 알아낼수 있다.

 

여기서 좀더 업그레이드를 시켜서 오류처리와 정보들을 집어넣어보자.

 

 

try:

 

    s = socket.socket(socket.AF_INET,
    socket.SOCK_STREAM)
    print('socket 이 성공적으로 만들어졌습니다')
except socket.error as err:
    print(f'socket 이 만들어지는데 실패하였습니다. {err}')

 

예외처리를 하기위해  구문을 사용해 주자.

try:

그다음 socket 을 생성해 주고

s = socket.socket(socket.AF_INET,
    socket.SOCK_STREAM)
 

socket 이 성공적으로 만들어졌으면 

 

print('socket 이 성공적으로 만들어졌습니다')

 

라는걸 사용해 소켓이 만들어지는데에 실패를 하면 

 

except socket.error as err:

 

이가 출력되게 하자 

 

print(f'socket 이 만들어지는데 실패하였습니다. {err}')

 

 

포트를 지정해주자 

 

나는 80,32,445 로 지정해줬다.

 

 

예외처리 설정

 

호스트 변수 host_ip 호스트의 이름 '구글의' IPV4 를 가져오자

host_ip = socket.gethostbyname('www.google.com')

 

소켓 gaierror 호스트의 이름을 못찾겠을떄 이 에러가 출력되게 하자.

except socket.gaierror:
print('호스트에 주소가 잘못되였습니다.')

 

 

프로그램 종료

sys.exit()

 

host_ip 와 포트를 연동하여 IPV4 정보를 가져오기

 

그후 소켓연동에 성공했다는 print 출력 {host_up}

s.connect((host_ip, port))
print(f'소켓연동에 성공적으로 연동되였습니다. [+] 포트 == {host_ip} ')