고통은 사라지고 결과는 남는다. Records of Chansolve

Python: TCP/IP 소켓 통신 본문

IT

Python: TCP/IP 소켓 통신

엄청큰노란닭 2023. 9. 13. 10:01

네트워크(소켓 통신)

주소

  • 맥주소: 하드웨어 주소. 랜카드에 고유넘버 있음. 로컬 네트워크 통신에서 사용
  • 논리주소: 인터넷에서 사용하는 주소
  • 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개
      • 실생활에서 많이 접하는 주소

서브넷마스크

  • 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)

네트워크 계층

  1. 응용 계층: 데이터를 받아서 어플리케이션에서 사용. 포트번호(네트워크 앱을 구분하는 고유한 번호)
  2. 전송계층(TCP/UDP): 데이터를 목적지에 전달하기 위해 길을 수립(라우팅). 패킷을 전달, 패킷 수신, 오류 체크
  3. IP 계층(IP/ARP/RARP): 전송할 데이터를 패킷 단위로 단편화. 패킷에 목적지, 보내는 주소를 논리주소로 설정. 주소 변환(논리주소 <-> 맥주소)
  4. 물리계층: 랜선으로 직접 물려있는 통신. 맥주소로 로컬 통신

소켓 통신종류

  1. TCP(전송 제어 프로토콜)
    • 한번 수립한 루트를 연결이 끊어질 때까지 계속 사용함 -> 신뢰성이 높은편, 연결지향적
    • 상대방이 패킷을 받았는지 확인, 순서, 오류 등을 체크 -> 속도는 느림
  2. 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
Comments