본문 바로가기

지식창고/IT 지식29

Wireshark에서 캡쳐시 UDP/TCP 데이터 뒤에 00 패딩이 붙는 이유 Wireshark에서 캡쳐시 UDP/TCP 데이터 뒤에 0으로 채워진 패딩이 붙는 이유에 대해서 아래 글을 보고 궁금증을 해결했다. https://stackoverflow.com/questions/45263480/udp-is-adding-bytes-to-end-of-datagram UDP is adding bytes to end of datagram? I have a Linux UDP Server written in C and I am sending a UDP datagram of 16 bytes. All the data is received correctly by the client, but the wireshark log is showing that two extra bytes are being..... 2024. 1. 24.
TCP/IP stack TCP/IP stack TCP/IP 스택이라고 하면 전송 제어 프로토콜인 TCP와 인터넷 프로토콜인 IP, 단일 프로토콜을 말하는게 아니라 이를 포함하여 여러 프로토콜로 구성된 프로토콜 스택이다. OSI 모델과 비교될 수 있으나 OSI 모델이 개념적인 이해를 돕기 위해 사용된다면 현장에서 실제로 사용되는 것은 TCP/IP 스택이다. OSI Model과 TCP/IP stack의 비교 TCP/IP stack은 Application, Transport, Internet, Network Access의 4계층으로 구성되며 위와 같이 OSI Model의 7 layer와 매핑될 수 있다. TCP/IP stack에서 두 호스트 간 커뮤니케이션 시 PDU(Protocol Data Unit)를 주고받게 되는데, PDU 대.. 2024. 1. 10.
loop unroll loop unroll 루프 언롤은 반복문을 효과적으로 최적화하는 기법 중 하나이다. 이 기법은 반복문의 반복 횟수를 줄여 성능을 향상시키는 것을 목표로 한다. 일반적으로 루프 언롤은 컴파일러 최적화에 의해 자동으로 수행되기도 하지만, 때로는 프로그래머가 수동으로 코드를 작성하여 성능을 개선하기도 한다. loop unroll 예시 장점 루프 언롤은 분기체크로 인한 오버헤드를 줄여주고 파이프라인을 더 효과적으로 사용할 수 있도록 하여 연속적인 명령어를 병렬로 처리하는데 도움이 된다. 때문에 특정 상황에서는 성능 향상을 가져온다. 단점 반복문 내의 코드를 복사하므로 코드 크기가 증가로 인한 캐시누락이 발생하여 오히려 성능에 안좋은 영향을 미칠 수 있다. 또한 프로그래머가 직접 루프 언롤을 사용했을 때 코드의 .. 2023. 12. 19.
CPU 구조 CPU 구조 ALU (Arithmetic logic unit) : 각종 산술 연산(덧셈, 뺄셈, 곱셈, 나눗셈)과 논리연산(AND, OR, NOT)을 수행하는 회로로 이루어진 하드웨어 모듈이다. Register : CPU 내부에 위치한 기억장치로서, 액세스 속도가 컴퓨터의 기억장치들 중에서 가장 빠르다. 그러나 내부 회로가 복잡하여 비교적 큰 공간을 차지하기 때문에 지정된 용도로만 사용되는 특수 목적 레지스터들과 적은 수의 일반 목적용 레지스터들만이 포함된다. Control Unit : 명령어를 해석하고, 그것을 실행하기 위한 다양한 제어 신호를 순차적으로 발생하는 하드웨어 모듈이다. CPU가 제공하는 명령어들의 수가 많아질수록 Control Unit의 내부 회로는 더 복잡해지므로 최근에는 명령어의 수를.. 2023. 12. 18.
스위치, 허브, 라우터, 공유기 차이점 스위치 리소스 공유를 목적으로 여러 기기를 연결하는 네트워크 장비이다. L2 계층에서 작동하며 MAC 주소를 사용해 물리적 포트에 연결된 기기들의 위치를 식별한다. 한 포트에서 들어온 패킷을 받아 헤더를 읽고, 패킷이 도달해야 하는 기기로 이어지는 특정 포트로만 패킷을 내보낸다. 장점은 목적지 기기로만 패킷을 전달하기 때문에 충돌이 적고 대역폭 활용이 효율적이다. 허브 허브 역시 리소스 공유를 목적으로 여러 기기를 연결하는 네트워크 장비이다. 허브가 스위치와 다른 점은 연결된 기기 중 하나에서 전송된 패킷을 허브에 연결된 모든 기기로 브로드 캐스팅한다. 단점은 대역폭이 제한되어 있고 충돌 가능성이 높다. ❗ 허브는 허브에 연결된 모든 노드가 전체 패킷을 받을 수 있는 구조기 때문에 wireshark를 통.. 2023. 12. 16.
ISO 국가표준 규격서 무료 열람 아래 사이트에서 가능하다. https://standard.go.kr/KSCI/portalindex.do e-나라 표준인증 수송기계 수송기계일반, 시험검사방법, 공통부품, 자전거, 기관ㆍ부품, 차쳬ㆍ안전, 전기전자장치ㆍ계기, 수리기기, 철도, 이륜자동차, 기타 standard.go.kr 앞에 KS가 붙는 표준이지만 국제표준과 대동소이하지 않을까 싶다. 2023. 12. 10.
UTF-8, UTF-8(BOM) 차이 메모장의 인코딩 옵션을 살펴보면 UTF-8과 UTF-8(BOM)이 있다. 그리고 Visual studio 고급 저장 옵션에는 서명있는 UTF-8과 서명있는 UTF-8이 있다. 둘의 차이는 무엇일까? BOM은 Byte Order Mark의 약자로 해당 문서가 UTF-8 인코딩임을 텍스트를 읽는 프로그램에 알리기 위한 용도로 파일 시작 부분에 위치하는 특별한 바이트 시퀀스이다. UTF-8과 비교해 UTF-8(BOM)의 차이는 파일 맨 앞에 EF BB BF가 붙는다는 것 뿐인데, UTF-8(BOM) 인코딩의 빈 텍스트 파일을 만들고 format-hex 명령어를 사용해서 hex dump를 해보면 알 수 있다. UTF-8에 BOM을 붙이는 것은 유니코드 표준에서 허용하지만 필수나 권장사항이 아니고, 대부분의 경우.. 2023. 11. 27.
랜카드 2개 사용시 각기 다른 용도로 사용하도록 라우팅 경로 설정하기 랜카드를 2개 사용하더라도 외부망과 연결될 디폴트 게이트웨이는 1개만 지정 가능하다. 이때 아래 링크의 방법을 사용하여 랜카드1은 외부통신에 사용하고, 특정 IP 또는 특정 IP 대역에 접속시 랜카드2를 사용하도록 설정할 수 있다. 라우팅 테이블 출력 route print 인터페이스 메트릭(랜카드 우선순위) 설정 라우팅 값 추가 // 특정 IP에 접속시 특정 게이트웨이 사용 route add 111.111.111.111 mask 255.255.255.255 192.168.1.1 -p // 특정 IP 대역 접속시 특정 게이트웨이 사용 route add 111.111.111.0 mask 255.255.255.0 192.168.1.1 -p -p 옵션을 주면 재부팅을해도 적용된다. 참고 : https://www.. 2023. 11. 16.
클라이언트에서 서버로 ping은 되는데 connect가 안될 때, 방화벽 확인 서버의 방화벽 인바운드 규칙 목록을 확인해보도록 하자 방화벽 방화벽은 다양한 규칙 및 정책을 기반으로 네트워크 트래픽을 필터링하고 차단하는데 사용된다. 인바운드 규칙, 아웃바운드 규칙 방화벽 규칙은 인바운드와 아웃바운드 규칙으로 나뉜다. 인바운드 규칙은 외부에서 내부로 들어오는 트래픽을 제어하고 아웃바운드 규칙은 내부에서 외부로 나가는 트래픽을 제어한다. Windows Defender 방화벽의 기본설정은 보안을 위해 인바운드 트래픽은 모두 차단하고, 외부 서비스를 자유롭게 사용할 수 있게 하기 위해 아웃바운드 트래픽은 모두 허용하는 경향이 있다. 때문에 서버-클라이언트 통신이 안된다면 클라이언트 방화벽 아웃바운드 규칙보다 서버의 방화벽 인바운드 규칙을 먼저 들여다볼 필요가 있다. 방화벽 규칙 설정 요소 .. 2023. 11. 12.
Doxygen Doxygen은 코드 문서화 도구로, 코드에 대한 자동화된 문서를 생성하는 데 사용된다. 주석을 특정 형식으로 작성하여 코드의 클래스, 변수, 함수 등을 문서화할 수 있다. Doxygen 주석의 일반적인 구조는 '/**'로 시작하고 '*/'로 종료되며, 주석 내부에는 여러 줄의 설명, 태그, 파라미터, 리턴 값 등을 추가할 수 있습니다 /** * @brief Brief description of the item. * * Detailed description of the item. This can span multiple lines. * * @param param1 Description of the first parameter. * @param param2 Description of the second p.. 2023. 9. 29.