파이썬 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번 포트를 이용해서 보내주고
그 내용을 서버에게 다시 돌려받아서 잘 출력되는걸 보면 에코 서버가 정상적으로 잘 동작 하는걸 볼 수 있다 )
'프로그래밍 > NETWORK HACKING' 카테고리의 다른 글
[네트워크 보안] 파이썬3 struct 모듈을 이용한 패킷 분석 (0) | 2017.06.17 |
---|---|
[네트워크 보안] UDP 통신 계층별 분석 (0) | 2017.06.16 |
[네트워크 보안] 파이썬 소켓 통신(UDP) / UDP 에코서버 실습 (0) | 2017.06.13 |
[네트워크 보안] OSI 7계층 / 파이썬 소켓 프로그래밍 / MAC 주소 변경 방법 (2) | 2017.06.12 |
[네트워크 보안] CentOS6 Python3 설치 및 기본 실습 환경 구축, 보안 설정 해제 (0) | 2017.06.08 |
댓글