- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로젝트
- Linux
- 그라파나
- Python
- GPIO
- synology
- 네트워크
- 안드로이드
- Shell script
- docker
- System
- 쉘 스크립트 if문
- 쉘 스크립트 기초
- API
- Java
- 클라우드
- 자바
- GUI
- 메소드
- 라즈베리파이
- RaspberryPi
- nginx
- centos docker
- ACL
- JSP
- 쉘 스크립트
- LEVIATHAN
- Tkinter
- Android
- 리눅스
- Today
- Total
IT창고
Network TCP 클라이언트/서버 프로그램 본문
TCP 통신에 대해 알아보겠습니다.
TCP통신은 4계층(전송계층)에서 이루어지는 통신으로 신뢰성있는 통신을 보장하고 흐름제어 및 연결지향성을 같습니다.
UDP통신과 다르게 신뢰성이 있는다는 뜻은 TCP통신은 서로가 연결되어 송/수신을 받는데 UDP는 송신만하기 떄문에 신뢰성이 없다고 할수있습니다.
TCP 에코서버를 만들어보겠습니다.
TCP서버는 UDP서버에서 쓰던 함수에서 listen과 accept를 추가로 더 사용합니다.
포트를 설정할때는 사용중인 포트와 충돌이 나지않도록 사용하지않는 포트를 사용해야만 하는데 몇몇 지정포트(well-known)는 암기해두는 편이 좋습니다.
ex) http: 80, ssh:22, SSL: 443, telnet: 23, ftp: 21, dns: 53, stmp: 25, mysql: 3306 등
인터넷에서도 확인할수있지만 리눅스에서 /etc/service 파일에서도 확인해볼수있습니다.
server의 소켓을 생성하고 client를 따로 설정해야합니다. listen에서 최대 통신가능한 수를 설정하고 accept에서 client의 응답을 대기합니다.
UDP통신과의 다른점은 서로 송/수신을 하고 다음 TCP통신을 위해서는 대기 시간이 필요합니다. (TIME_WAIT)
TCP 클라이언트 프로그램을 만들어보겠습니다.
UDP클라이언트와 다른점은 connect입니다. sys를 import해서 인자를 넣어보게 했는데 connect(( ip, port)) 형식으로 들어갑니다.
서로 TCP통신이 되는걸 확인해볼수있습니다.
이번에는 TCP에코서버를 여러명이 접속할수있도록 만들어보겠습니다.
https://docs.python.org/3/library/threading.html?highlight=threading#module-threading
파이썬의 Threading의 관한 문서입니다.
따로 함수로 묶어 쓰레드를 사용했습니다. 다중접속이기에 어디서 오는 정보인지 확인하기 위해 클라이언트정보를 print했습니다.
다른 곳에서 다중 접속이 가능하며 서로간의 데이터가 주고 받는걸 확인했습니다.
'보안 > Network' 카테고리의 다른 글
Network APR(Address Resolution Protocol) (0) | 2018.03.21 |
---|---|
Network 각 계층별 헤더 파이썬모듈 정리 (0) | 2018.03.20 |
Network Scanning Program (0) | 2018.03.19 |
Network UDP 클라이언트/서버 프로그램 (0) | 2018.03.15 |
네트워크 실습환경구성 및 OSI 7 Layer (0) | 2018.03.13 |