본문 바로가기
프로그래밍/NETWORK HACKING

[네트워크 보안] 파이썬 TCP 소켓 / TCP 에코 서버 & 클라이언트

by B T Y 2017. 6. 15.
반응형

파이썬 TCP 소켓 / TCP 에코 서버 & 클라이언트에 대해서 정리한다.

 

 

※ TCP 소켓

 

 

1. 소켓의 타입: SOCK_STREAM

 

  - 서버

1. 서버소켓
2. bind( ... )  # 포트 지정
3. Listen( ... )  # 클라이언트 연결 요청을 받기 위한 메서드
   ( 인자로 클라이언트 연결을 몇개까지 받을지 결정 )
4. accept( ... )  # 블록 메서드, 수신 대기

5. send, recv

 

 


  - 클라이언트

1. 클라이언트 소켓
2. connect( ... )

3. send, recv

 

 

 


 


※ 실습: TCP 에코 서버 & 클라이언트

 

 

< TCP 서버 기본 코드 >

 

( 서버측은 해당 bind로 클라이언트와 연결을 하고 들어오는 데이터를 받아서

그 내용을 클라이언트에게 되돌려준다 )

 

* server_sock.accept()는 클라이언트 소켓과 주소 값을 반환 해주기 때문에

클라이언트에게 데이터를 다시 송신하려면 반환되는 클라이언트 소켓을 이용하면 된다.

 

 

< TCP 클라이언트 기본 코드 >

 

( 클라이언트측은 해당 서버에 연결을 하기 위해서 connect()만을 이용하면 연결 작업이 끝나고

그 이후부터는 연결된 서버로부터 데이터를 송/수신 할 수 있다 )

 

 

< TCP 서버 랜덤 포트 오픈 >

 

( random 모듈을 이용해서 서버를 열때 포트번호는 10000 ~ 65535번 사이에서 랜덤으로 정해지게 만들어주고

몇번 포트가 열렸는지 출력하게 만들어주면 좀더 편리하게 사용할 수 있다 )

 

 

< TCP 클라이언트 sys모듈 이용 >

 

( sys 모듈을 이용해서 파이썬을 실행할때 IP와 Port를 인자값으로 받아서 실행 시키도록하고

IP와 Port를 인자값으로 주지 않고 실행하면 에러 문구를 출력하게 된다 )

 

 

( TCP서버를 파이썬으로 실행하면 랜덤한 포트가 열리면서 어떤 포트가 열렸는지 listen on port를 통해서 알 수 있다 )

 

 

( 클라이언트는 hi라는 내용을 TCP 서버가 사용중인 64257번 포트를 이용해서 보내주고

그 내용을 서버에게 다시 돌려받아서 잘 출력되는걸 보면 에코 서버가 정상적으로 잘 동작 하는걸 볼 수 있다 )

 

 

반응형

댓글