본문 바로가기

지식창고/IT 지식29

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.
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.