STM32 TCP/IP 통신

kenGwon·2024년 1월 22일

[STM32] Firmware/RTOS

목록 보기
8/11

기본 설정 잡기 (.ioc 파일)

  1. ioc 파일에서 "Middleware and Software Packs"탭에서 "LWIP"를 누른다.
    (LwIP = light weight ip)

  2. "enalbe"시켜준다.

  3. 그러면 여러가지 통신 옵션이 나온다. 그중에 눈여겨 볼 것은 다음과 같다.

    • HTTPD: 웹 통신에 쓰이는 프로토콜이다.
    • SNMP: 여러 통신장비에 대한 망 관리에 쓰이는 프로토콜이다.(simple network management protocol) 통신노드의 중심이 되는 통신교환국에 가면 정말 많은 중계기가 있는데, 걔내들을 관리하는데 쓰이는게 SNMP라는 전세계 통일 통신 규격이다.
    • SNTP/SMTP: 이메일 전송에 쓰이는 통신 프로토콜이다.
    • PPP: 통신 패킷을 그냥 보내는게 아니라, 패킷을 한번 더 감싸서 보내준다. TCP/IP 패킷을 한번 더 감싸는 것이다. 그런데 요즘은 광케이블 자체의 기능이 이런 느낌의 것을 지원해줘서 PPP 프로토콜을 그렇게 많이 쓰지는 않는다고 한다.
  4. "General Settings"탭을 누른다. 거기보면 DHCP(Dynamic Host Configuration Protocol)이 있다. 이 프로토콜 때문에 공유기를 껏다 켜는 것으로 해당 공유기에 연결된 디바이스에게 유동IP를 할당해준다.

  5. 하지만 우리는 DHCP를 쓰지 않고, 고정IP로 실습을 진행할 것이다.

  6. 그러므로 LWIP_DHCP 옵션을 Disabled 시켜준다.

  7. 그리고 나서 직접 고정IP를 할당해줄 것이다.

    • 내 센터 로컬 컴퓨터의 경우, 할당된 고정IP는 다음과 같다.
    • 우리 교실 컴퓨터들이 이미 10.10.15.75까지 사용하고 있기 때문에, 내가 쓰는 STM32보드에는 그 뒤에 쓰지 않고 있는 IP를 할당해줘야 한다.
    • 내가 가지고 있는 STM32보드에 할당받은 IP는 10.10.15.82이다..!!
  8. 이제부터 내 로컬 컴퓨터와 STM32는 TCP/IP 통신을 통해 데이터를 주고 받을 수 있게 될 것이다.

    • PC IP address: 10.10.15.70/24
    • STM32 IP address: 10.10.15.82/24
    • Gateway: 10.10.15.254
  9. 상세한 최종설정은 다음과 같다.

  10. 근데 코드 제너레이션이 안된다... 아무래도 "Platform Settings"를 설정을 해줘야 올바르게 코드 제너레이션이 되는거 같은데 말이다...

TCP/IP

수업자료

네트워크, TCP/IP 기본 개념

라우팅: "길을 찾는것"

DNS

실질적으로 TCP/IP가 주소를 찾아가는 방식은 32비트 혹은 64비트의 주소를 찾아갈 뿐이다. 그런데 우린 www.naver.com같은 이름을 주소창에 쳐서 찾아간다. www.naver.com을 특정IP에 바인딩? 혹은 alias? 해주는 느낌인 것인데, 이것을 담당해주는 것이 바로 DNS(Domain Name Service)서버이다.

OSI 7 Layer

Presentation Layer에서 암호화 및 복호화가 필요한 이유

패킷을 암호화 하지 않으면, wireshark 같은 프로그램으로 패킷을 하나하나 들춰봐서 금융정보 같은 중요 정보들을 죄다 염탐할 수 있게 된다. 그래서 Presentation layer에서 암호화 및 복호화 작업이 필요하게 된다.

금융거래를 보안없는 Wi-Fi 상에서 하면 위험한 이유

바로 패킷에 대한 보안이 안되서, 그 내용을 까서 볼 수 있기 때문이다.
그러므로 금융거래는 보안인증서가 있는 Wi-Fi나, 아니면 그냥 LTE를 통해서 통신사가 제공하는 네트워크 통신을 통해서 하는 것이 안전한 것이다.

Mac Address의 앞에 3byte는 제조사ID이다

  • Mac Address가 필요한 이유: 불필요한 패킷 로드를 줄이기 위함. 다양한 맥 어드레스를 사용해줘야 필요한 것에 대해서만 로드를 할 수 있게 된다.(그래서 공장에서 랜 카드를 찍어낼 때 Mac Address를 다 다르게 해서 찍어내야 한다.)

Mac Address와 IP Address는 짝으로 아귀가 맞아야 한다.

하드웨어 어드레스와 소프트웨어 어드레스가 커플링이 되어있어야지 제대로 통신이 된다. IP Address만 생각하고 Mac Address를 간과하면 안된다.

결국 각 계층마다 프로토콜에 맞는 header를 붙여주는 것


결국 네트워크 전송 플로우는 최초의 응용계층에서 Data가 시작해서 각 레이어를 거칠 때마다 Data의 앞에다가 계속 헤더를 붙여주면서 물리 계층까지 내려갔다가, 상대편 네트워크 노드에 가서 거꾸로 헤더를 참조하면서 header를 하나씩 떼가면서 응용계층까지 올라가서 값을 받게 되는 것이다.
그림으로 보면 다음과 같다.

Subnet

서브넷이 등장한 이유

서브넷이란

서브넷 마스크


서브넷마스크로는 C class를 많이 쓴다. 우리 서울기술교육센터도 C class로 서브넷 마스크를 지정하여 사용하고 있다.

Subnetting

서브넷팅이란 간단하게 말하자면, IP 주소를 효율적으로 나누어 사용하기 위한 방법을 일컫는 말이다.


"서브넷 구분비트"로 서브넷을 구분하여 사용할 수 있다.

서울기술교육센터에서 아이피가 분배된 경위

아래 그램을 참고하면 우리 서울 기술 교육센터에서 대체 어떻게 층마다 IP가 할당된 것인지 대충 느낌을 잡을 수 있게 된다. 결국은 서브넷을 이용하여 아이피를 할당한 것이다.

브로드캐스트 주소

브로드캐스트 주소는 특정 Network 영역에 속하는 모든 호스트들에게 전달 가능한 주소를 의미한다.

예를 들어 C Class IP주소 192.168.3.150\26이라는 IP가 있을 때,
네트워크 영역인 192.168.3.128 ~ 192.168.3.191에 해당하는 모든 호스트들에게 동시에 정보를 뿌릴 수 있는 주소를 말하는 것이다.

보통은 서브넷 주소 영역의 맨 마지막 주소를 브로드캐스트 주소로 사용한다.

예를 들어 서브넷 마스크가 255.255.255.240으로 설정된 경우가 있다고 치자. 그러면 서브넷마스크가 240(=0b11110000)이기 때문에 서브넷 비트를 제외한 호스트 영역은 2^4 만큼의 영역이 된다. 그 하나의 영역에서 마지막 31번째 주소가 그 서브넷 영역의 브로드캐스트 주소가 되는 것이다.

공유기

공유기를 거치면서 패킷의 헤더를 바꿔치기 된다.

공유기 관리 내부에서 관리되던 IP에서 밖으로 나가려는 패킷이 공유기에 도착하면, 공유기는 내부에서 관리되던 IP 주소 헤더 부분을 공인IP 주소 헤더로 바꿔치기 해서 밖으로 내보내준다.
이로써 외부에서는 공유기를 통해서 헤더가 바꿔치기된 패킷을 받게 되고 그로써 통신이 가능하게 된다. 이것이 바로 공유기의 핵심 기능이다.

밖에서 공유기 관리 내부망으로 들어오려는 패킷도 마찬가지다. Source IP라고 불리는 헤더부분이 원래 공인IP로 되어있는데, 그 부분을 공유기 내부에서 관리되는 IP 주소 헤더로 바꿔치기해서 내부로 들여보내준다.

결국 공유기가 하는 일은 내부 망과 외부망에서 패킷이 왔다갔다 할 때, 그 사이에 매번 interrupt를 걸어서 공인 IP부분(Source IP부분)을 계속해서 바꿔치기 해주는 것이다.

여기서 바꿔치기 할때, 기기마다 서로 다른 사설 IP를 가지고 있으므로 이것을 구분해줄 key가 쓰이는데, 여기에 주로 Mac Address가 쓰인다.

그래서 위에서 Mac Address와 IP Address가 세트라고 했던 것이다..!!

profile
스펀지맨

0개의 댓글