일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 알고리즘 #백준 #집합과맵
- 라이브러리 #IT지식 #CS지식
- 스톱워치
- 백준 #알고리즘
- 맵핑
- 문자열
- Python
- 추상클래스 #인터페이스
- Java #객체지향 # 프로그래밍 # SOLID #OOP
- Anaconda #가상환경
- 프로그래머스 #파이썬 #python #슬라이싱 #코딩
- GPT #챗봇
Archives
- Today
- Total
고통은 사라지고 결과는 남는다. Records of Chansolve
Python: TCP/IP 소켓 통신 본문
네트워크(소켓 통신)
주소
- 맥주소: 하드웨어 주소. 랜카드에 고유넘버 있음. 로컬 네트워크 통신에서 사용
- 논리주소: 인터넷에서 사용하는 주소
- IPv4: 32비트 주소
- A class: netID(1B):hostID(3B) => 네트워크 2^8개 / 한 네트워크 내 컴퓨터 2^32개
- 동네 수는 적지만, 한 네트워크 내 컴퓨터 수가 큼 => 큰 네트워크 구성에 적합(대규모 네트워크 형성)
- B class: netID(2B):hostID(2B) => 네트워크 2^16개 / 한 네트워크 내 컴퓨터 2^16
- 중형 네트워크 구성에 적합
- C class: netID(3B):hostID(1B) => 네트워크 2^24개 / 한 네트워크 내 컴퓨터 2^8개
- 실생활에서 많이 접하는 주소
- A class: netID(1B):hostID(3B) => 네트워크 2^8개 / 한 네트워크 내 컴퓨터 2^32개
서브넷마스크
- netID를 확인하기 위한 마스크 ex) A class: 255.0.0.0 B class: 255.255.0.0 C class: 255.255.255.0 => 개인 컴퓨터의 [제어판] -> [네트워크 및 인터넷] -> [네트워크 및 공유센터] -> [이더넷] -> [자세히] 에서 볼 수 있다
- 또는 네이버에 [내 아이피 주소 확인]을 검색하면 된다.
- 네트워크를 더 쪼개서 사용하고자 할 때 사용 (why? 트래픽 조절을 위해)
- C class에서 netID는 3바이트로 표현됨. 1바이트는 host 주소를 표현하는데, 이 비트를 더 쪼개서 더 많은 네트워크를 표현할 수 있음(subnetID 활용)
- ex) hostID 8비트 중 2비트를 subnet으로 지정할 경우
- 4개의 하위 네트워크를 구축할 수 있음. 이 subnet에는 컴퓨터 2^6개로 구성됨 => 서브넷마스크: 255.255.255.192 (192 = 11000000(2)
네트워크 계층
- 응용 계층: 데이터를 받아서 어플리케이션에서 사용. 포트번호(네트워크 앱을 구분하는 고유한 번호)
- 전송계층(TCP/UDP): 데이터를 목적지에 전달하기 위해 길을 수립(라우팅). 패킷을 전달, 패킷 수신, 오류 체크
- IP 계층(IP/ARP/RARP): 전송할 데이터를 패킷 단위로 단편화. 패킷에 목적지, 보내는 주소를 논리주소로 설정. 주소 변환(논리주소 <-> 맥주소)
- 물리계층: 랜선으로 직접 물려있는 통신. 맥주소로 로컬 통신
소켓 통신종류
- TCP(전송 제어 프로토콜)
- 한번 수립한 루트를 연결이 끊어질 때까지 계속 사용함 -> 신뢰성이 높은편, 연결지향적
- 상대방이 패킷을 받았는지 확인, 순서, 오류 등을 체크 -> 속도는 느림
- UDP(사용자 데이터그램 프로토콜)
- 신뢰성이 떨어짐, 비연결지향적
- 패킷 전달할 때 마다 새 길을 수립하고 순서, 오류 체크 안함 -> 속도는 빠름
- 전사적으로 메세지 전달하는 작업이나 브로드캐스팅에 적합함
소켓 통신
소켓(Socket)이란 프로세스들로 하여금 네트워크를 통해 서로 통신을 할 수 있도록 하는 '창구'의 역할을 하는 것을 의미한다. 각 프로세스들은 다른 프로세스와 데이터를 주고 받기 위해선 반드시 소켓을 열고, 다른 프로세스의 소켓과 연결하여야 한다. 이러한 소켓을 이용한 네트워크 통신을 소켓 통신이라고 한다.
구성
- 프로토콜: 통신 규약. TCP와 UDP가 있다.
- IP: 컴퓨터의 고유 주소
- PORT: IP와 매칭되는 컴퓨터 내에서 네트워크와 통신을 하고 있는 프로세스를 구분할 수 있는 유일한 번호. 컴퓨터 내에서 다른 프로세스가 같은 포트번호를 가지면 안된다.
'IT' 카테고리의 다른 글
mysqlclient Error (0) | 2023.12.04 |
---|---|
Django for문 여러 개 쓰는 방법 (0) | 2023.10.05 |
Python으로 스톱워치를 만들어보자 (0) | 2023.04.06 |
챗GPT(chatGPT)란 (0) | 2023.02.21 |
Anaconda 가상환경 (0) | 2023.02.16 |