본문 바로가기

지식창고/IT 지식30

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.
만능기판에서 SOIC type IC 사용하기 + SMD 부품 납땜방법 나는 주로 2.54mm 피치의 만능기판이나 브레드보드를 사용하기 때문에 DIP type으로 된 IC를 구해서 쓰는데 DIP type 재고가 없어서 어쩔 수 없이 1.27mm 피치의 SMD(표면실장)부품으로 구입하는 경우가 있다. 이럴 땐 아래와 같은 변환기판을 이용하면 만능기판이나 브레드보드에서 사용가능하다. 변환기판 구입시에는 데이터시트를 보고 pin수, pitch, hole 규격이 맞는 것으로 구입한다. SMD 부품 납땜 방법 : https://m.vctec.co.kr/web/product/exso/pdf/smdsoldering.pdf 1. 납땜할 자리의 한쪽 끝에 미리 납을 묻혀둔다. 2. 핀셋 등을 이용하여 소자를 자리에 정확하게 맞춘 후 묻혀둔 납을 녹여 고정 시킨다. 3. 고정 후 납을 모든 .. 2023. 8. 14.
형상관리 주요 용어 형상항목 (Configuration Item) : 형상관리의 대상이 되는 것으로서 전체 시스템의 구성 요소를 계층적으로 분할한 각 레벨의 항목을 가리킨다. 예를 들면, 하드웨어 경우 시스템-서브시스템-조립체(assembly)-부품 (part) 등이, 소프트웨어 경우, 시스템-서브시스템-프로그램 또는 문서 등을 가리킨다. 기준선 또는 기준문서 (Baseline) : 대상 시스템에 대한 기술적인 통제를 하게 되는 시점 (milestone) 또는 그 시점의 기준문서를 가리킨다. 기준선에서는 다음 단계를 진행할 것인지의 여부에 대한 의사결정 ('go/no-go decision making)을 하게 되며, 다음 단계를 진행하기로 결정한 경우 그 시점까지의 산출물은 다음 단계에 대한 기준선이 된다. 기준선에 대한 .. 2023. 8. 14.
왜 Windows 만 path 구분자로 Backslash를 사용할까 웹 (http://www.google.com/), 리눅스 (/home/user/), Android 등 대부분의 곳에서 path 구분자로 / forward slash를 사용하는데 왜 윈도우만 \ backslash를 사용할까? MS-DOS 1.0 시절에는 디렉터리를 지원하지 않았고 / 를 명령어의 옵션을 선택하는 용도로 사용했다. 현재도 명령 프롬프트에서 dir /? 를 치면 dir 명령어로 사용가능한 옵션의 목록을 볼 수 있다. MS-DOS 2.0 시절부터는 디렉터리 지원을 도입했지만 / 문자는 이미 다른 용도로 사용하고 있었기 때문에 시각적으로 가장 비슷해 보이는 문자인 \ 를 path 구분자로 사용하기로 했다. 즉 윈도우만 path 구분자로 backslash를 사용하는건 DOS시절의 레거시인 셈이다. .. 2023. 7. 11.
소프트웨어 신뢰성 시험 - 동적 시험 Dynamic Testing 소프트웨어 신뢰성 시험 소프트웨어가 일으킬 수 있는 결함을 식별하는 시험으로 정적시험과 동적시험으로 구성된다. 동적 시험 Dynamic Testing 소프트웨어를 실제 하드웨어(Target)에 탑재한 상태에서 소프트웨어통합시험절차서(STD)에 기술된 시험절차에 따라 요구사항기반으로 Code Coverage(실행률)을 점검하는 것을 말한다. 동적 시험 종류와 기준 설정 Code Coverage는 전체 소스 코드에서 시험된 코드를 백분률(%)로 나타낸 것이며, 그 종류는 시험 수준에 따라 Statement Coverage, Branch Coverage, MC/DC (Modified Condition/Decision) Coverage로 구분된다. 이 중 Statement 가 가장 기본적인 수준이고, Branc.. 2023. 6. 25.
시맨틱 버저닝 (Semantic Versioning) 시맨틱 버저닝은 소프트웨어의 버전 번호를 관리하기 위한 규칙 및 방법론이다. 버전 번호를 통해 소프트웨어의 변경 내용과 호환성을 명확히 표현하는 데 그 목적이 있으며, 일반적으로 "MAJOR.MINOR.PATCH" 형식으로 버전 번호를 표기한다. 1. MAJOR (주 버전): 기존 버전과 호환되지 않는 주요 변경사항이 있을 때 증가. 일반적으로 API의 큰 변경이나 하위 시스템의 구조적 변화를 의미하므로 주 버전이 변경되면 이전 버전과의 호환성이 보장되지 않을 수 있다. 2. MINOR (부 버전): 이전 버전과의 하위 호환성을 유지하면서 새로운 기능이 추가되거나 기존 기능이 변경될 때 증가. 주 버전 변경 없이 부 버전이 업데이트되면, 사용자는 새로운 기능을 사용하거나 개선된 기능을 기대할 수 있다. .. 2023. 5. 28.
데이터 크기 단위와 네트워크 속도 표기, MBps <-> Mbps 변환 이더넷 속도가 100Mbps 라고하면 초당 몇 메가바이트를 전송할 수 있을까? 얼핏보면 100메가바이트를 전송할 수 있는 속도처럼 보이지만 그렇지 않다. 100Mbps는 초당 100 메가'비트'를 전송할 수 있는 속도를 나타낸다. 1바이트는 8비트이니 초당 12.5메가바이트를 전송 할 수 있는 속도이다. 여기서 하나 더 주의할 점이 네트워크 속도 표기 시 붙은 M은 SI 단위체계를 따르는 것이다. 즉 K는 10^3, M은 10^6을 의미한다. 하지만 우리가 일반적으로 데이터의 크기를 나타낼 때는 이진수 체계에서 용량을 표현하는 방식으로 생각하기 때문에 MB는 2^20을 의미하고 12,500,000 / (2^20) = 11.9 이다. 결론은 네트워크가 ideal한 상태에서 초당 전송 가능한 데이터의 크기는.. 2023. 5. 7.
저장장치 클러스터 크기 확인법 diskpart에서 파티션 선택하고 filesystems 입력 2023. 3. 31.
DNS, 보조 DNS, DDNS, nslookup DNS DNS 는 'www.naver.com'과 같은 도메인 주소를 컴퓨터가 인식할 수 있는 '223.130.200.107' 과 같은 IP주소로 변환해주는 시스템이며 이 DNS를 운영하는 서버를 네임 서버라고 한다. 주 DNS가 있고 보조 DNS가 있는데, 통상적으로 주 DNS로 쿼리하다가 주 DNS에 문제가 생기면 그때 보조 DNS가 쿼리를 한다고 알려져 있지만 일부 장비에서는 주 DNS랑 보조 DNS는 의미없고 다 동시에 작동하는데 가장 빠르게 IP정보를 가져온 곳을 채택한다고 한다. DNS서버는 보통 공유기에 등록되어 있어 일반적으로 DHCP 주소를 할당 받을 때 자동으로 DNS 서버 주소도 같이 할당 받게 된다. 통신사별 DNS 서버 주소 기본 보조 KT olleh 168.126.63.1 168... 2023. 3. 19.
ANSI, 유니코드 인코딩 ASCII 코드 (American Standard Code for Information Interchange) 최초의 문자열 인코딩 7 bit로 구성되어 있으며, 영어 문자, 숫자, 특수문자, 기호 등 0x00부터 0x7F까지 총128개 문자를 표현할 수 있다. 7 bit인 이유는 1bit를 패리티용도로 나뒀기 때문이다. 어느 시스템에서도 적용가능하지만 영어 이외의 문자를 표현할 수 없다는 단점이 있다. ANSI 특정 인코딩 방식 한가지를 가리키는 말이 아니라 각 언어마다 CodePage라 불리는 코드표를 따로 정해두고, 언어별 코드표를 사용하여 인코딩하는 방식을 뜻한다. 예를들면 한글 CodePage는 EUC-KR과 CP949가 있다. 참고로 한글 Windows 메모장에서 ANSI를 선택하면 CP949.. 2023. 2. 19.
[UML] 시퀀스 다이어그램 (Sequence Diagram) 시퀀스 다이어그램은 특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는지 표현하는 행위 다이어그램입니다. 현재 존재하는 시스템이 어떠한 시나리오로 움직이고 있는지를 나타내는데 장점을 가지고 있습니다. 시퀀스 다이어그램을 이용하면 API 등의 유즈 케이스를 디테일하게 알 수 있고 타 시스템의 API 호출 등의 로직을 모델링할 수 있어 시나리오를 파악하기 좋습니다. 예를 들어, 고객이 29CM 사이트 주문을 했을 때 고객이 주문한 시점부터 29CM 사이트의 주문 처리 순서, 이후 반환 케이스를 연속적으로 표현할 수 있습니다. 📁 Lifeline 모델링 되는 인스턴스를 나타냅니다. Lifeline은 네모와 점선으로 이루어져 있으며 네모가 객체의 관점으로 표현했다면 클래스이고 서비스 관점으로 표현했으.. 2023. 1. 27.
stderr 과 stdout 의 차이. 표준입출력의 버퍼 표준입력(STDIN): 표준 입력 장치의 ID 는 숫자로는 0 이며 일반적으로는 키보드가 된다. 표준출력(STDOUT): 출력을 위한 스트림으로 표준 출력 장치의 ID 는 1이며 일반적으로는 현재 쉘을 실행한 콘솔(console)이나 터미널(terminal)이 된다. 표준에러(STDERR): 에러를 위한 스트림으로 표준 에러 장치의 ID 는 2이며 일반적으로는 표준 출력과 동일하다. strerr(표준에러) 와 stdout(표준출력)은 둘 다 콘솔 화면에 출력한다는 점에서 동일하지만 둘의 차이점의 버퍼링 방식이다. strerr 는 Null buffering 방식으로 버퍼링 없이 바로 출력이 되지만 stdout 은 line buffering 방식으로 개행문자가 들어와야 출력이 되는 것이다. #include .. 2022. 12. 14.
정규표현식 Character What does it do? Example Matches ^ Matches beginning of line ^abc abc, abcdef.., abc123 $ Matches end of line abc$ my:abc, 123abc, theabc . Match any character a.c abc, asg, a2c | OR operator abc|xyz abc or xyz (...) Capture anything matched (a)b(c) Captures 'a' and 'c' (?:...) Non-capturing group (a)b(?:c) Captures 'a' but only groups 'c' [...] Matches anything contained in brackets [.. 2022. 12. 11.
ping 명령어 옵션, tracert 명령어 ping 명령어 옵션 -t : Ctrl + C 를 누르기 전까지 지속 -n count : 보낼 횟수 지정 ex. -n 100 -l size : 보낼 데이터 크기 지정 ex. -l 1500 -f : 조각화를 실행하지 않음 -l 옵션과 -f 옵션은 MTU를 확인하는 데 사용할 수 있다. MTU(Maximum Transmission Unit)란 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷 크기이고, 조각화를 하지 않는다는 건 패킷을 나누지 않고 한번에 보낸다는 뜻이다. 이더넷의 경우 MTU가 1500byte 고 IP헤더가 20byte 붙고 ICMP 헤더가 8byte 붙으니 어플리케이션이 사용할 수 있는 데이터 크기는 1472byte가 된다. 1473byte를 보내려고 하니 fragment가 필.. 2022. 10. 26.
x86-64 어셈블리어 어셈블리어 어셈블리 언어는 컴퓨터의 기계어와 치환되는 언어이다. 기계어가 여러 종류라면 어셈블리어도 여러 종류여야 함을 의미하며, CPU에 사용되는 ISA(명령어 집합 구조)에 따라서 IA-32, X86-64, ARM, MIPS 등 많은 종류의 어셈블리어가 존재한다. 어셈블리어 기본 구조 어셈블리의 문장은 동사에 해당하는 명령어(Operation Code, Opcode)와 목적어에 해당하는 피연산자(Operand)로 구성된다. Opcode Operand1, Operand2 어셈블리어 명령어의 종류 데이터 이동 : mov, lea 산술 연산 (Arithmetic) : inc, dec, add, sub 논리 연산 (Logical) : and, or, xor, not 비교 (Comparison) : cmp, .. 2022. 10. 20.
19.7년 마다 돌아오는 GPS판 Y2K 버그 GPS Week Number Rollover GPS의 시간 표기는 '위크 넘버 롤오버(Week Number Rollover)’로 불리는 구조적 문제를 안고있다. GPS가 처음 등장한 1980년 당시에는 날짜를 주 단위로 계산해 기록했으며, 주 단위를 표기하는데 10비트를 할당하였기 때문에 0-1023까지 week 번호를 표기하고 1023을 넘어가면 오버플로우가 나서 0으로 돌아가게 된다. 즉, 1년은 52주니까 약 19.7년까지만 날짜를 기록하도록 설계된 것이다. 해당 오류가 처음 발생한 것은 1999년 8월이며, 다음 오류는 2019년 4월 발생했다. 오류가 발생한 경우 해결 방법은 각각 다르다. 시스템을 초기화(리셋)하는 것으로 해결되는 사례가 있고, 펌웨어를 업데이트해야만 쓸 수 있는 기기도 있다. 한편, 가장 많이 쓰는 GPS 장착 기기인 .. 2022. 10. 17.
부동소수점 표현 IEEE 754 부동소수점 부동소수점(Floating point) 방식은 실수를 컴퓨터상에서 근사하여 표현할 때(원래 이진법으로는 십진법 소수를 정확하게 표현할 수 없다.) 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다. 컴퓨터에서는 고정소수점 방식보다 넓은 범위의 수를 나타낼 수 있지만 연산 속도고 비교적 느리기 때문에 별도의 전용 연산장치(FPU)를 두는 경우가 많다. 고정 소수점과 달리 정수 부분과 소수 부분의 자릿수가 일정하지 않으나 유효숫자의 자리수는 정해져 있다. IEEE 754 IEEE 754 는 컴퓨터에서 부동소수점을 표현하는 데 가장 널리 쓰이는 표준이다. IEEE 754의 부동 소수점 표현은 크게 세 .. 2022. 10. 13.
TCP Flag(URG, ACK, PSH, RST, SYN, FIN) TCP(Transmission Control Protocol)는 3-WAY Handshake 방식을 통해 두 지점 간에 세션을 연결하여 통신을 시작하고 4-WAY Handshake를 통해 세션을 종료하여 통신을 종료한다. 이러한 세션 연결과 해제 이외에도 데이터를 전송하거나 거부, 세션 종료 같은 기능이 패킷의 FLAG 값에 따라 달라지게 되는데, TCP FLAG는 기본적으로 6 가지로 구성된다. FLAG 순서 : URG | ACK | PSH | RST | SYN | FIN | 각각 1비트로 TCP 세그먼트 필드 안에 CONTROL BIT 또는 FLAG BIT로 정의되어 있다. SYN(Synchronization:동기화) - S : 연결 요청 플래그 TCP에서 세션을 성립할 때 가장 먼저 보내는 패킷 시.. 2022. 10. 5.
TCP/UDP 포트 번호 정리 일반적으로 포트 번호는 잘 알려진 포트(well-known port), 등록된 포트(registered port), 동적 포트(dynamic port) 세 가지로 나눌 수 있다. 잘 알려진 포트(well-known port)는 특정한 쓰임새를 위해서 IANA(Internet Assigned Numbers Authority)에서 할당한 TCP 및 UDP 포트 번호의 일부이다. 잘 알려진 포트(well-known port) : 0번 ~ 1023번 등록된 포트(registered port) : 1024번 ~ 49151번 동적 포트(dynamic port) : 49152번 ~ 65535번 이 번호는 강제적으로 지정된 것은 아니며, IANA의 권고안일 뿐이라서 가끔 각 포트 번호를 그대로 사용하지 않고 다른 용도.. 2022. 10. 2.
Ethernet Frame 최소 길이가 64 byte인 이유 (+ CSMA/CD) 프레임의 최소 길이는 왜 64 byte 일까. 그 이유는 과거 Layer 1의 표준 때문이었다. Ethernet이 처음 만들어졌을 때 통신을 위해 만들었던 최초의 케이블의 Type은 10BASE5 를 이용해서 통신을 하였다. 즉 대역폭 10Mbps & 거리 500M 의 동축 케이블이다. 또한 그 때 당시 Ethernet은 half-duplex 이었으므로 충돌(Collision)이 발생하는 구조였고, 충돌을 방지하기 위해 CSMA/CD방식을 사용하였다. 우선 송신 측에서는 내가 보낸 프레임이 목적지에 도착할 때까지는 충돌이 발생하는 지를 감시해야 하는데, 충돌이 발생하는지 안 하는지 감지할 동안 프레임이 계속 전송되고 있어야, 충돌 발생 시 프레임을 폐기하고 재 전송할 수 있다. 때문에 데이터가 가장 멀리.. 2022. 9. 10.
Ethernet Frame 이더넷 프레임의 구조 CSMA/CD 를 사용하는 Ethernet 상의 MAC 프레임을 이더넷 프레임이라고 한다. OSI 7 Layer 중 2계층인 데이터링크 계층에 해당하는 프로토콜이다. Ethernet Frame 의 구조 ▶ Preamble (7 byte) (10101010) 비트 동기를 위해 56 비트 동안 `1`,`0`을 반복함 ▶ SFD (1 byte) : Start of Frame Delimiter (10101011) 프레임 동기를 위한 식별용 문자 (0xAB). 마지막 두 비트가 `11` 임. 프리엠블 직후에 붙어 자신의 뒤로 프레임의 내용이 시작된 다는 것을 알리는 역할을 한다. Peaamble과 SFD는 물리계층 헤더이기 때문에 MAC Frame에는 포함되지 않고 Wireshark에서 확인되지않는다. ▶ MAC.. 2022. 9. 8.