목록전체 글 (20)
보안 / AI / 프로그래밍
[0x433] TCP HEADER Window Size - Window Size 필드는 송신자에게 응답( Ack )을 보내기 전에, 얼마나 많은 데이터를 수신자가 더 받을 수 있는지 알려줍니다. - 만약 수신자가 데이터 ( =패킷 ) 를 받는대로 빠르게 처리할 수 없다면, 수신 받은 버퍼는 점점 증가하고, Ack 패킷 안의 Window Size 값은 점점 감소합니다. - 이 Window Size 필드는 "보내는 데이터를 좀 줄여야 함" "수신자에게 수신자가 받은 데이터 버퍼를 처리할 시간을 줘야 함"을 송신자에게 알려주는 역할을 합니다. - 위 사진을 보시면, 클라이언트와 서버가 자신들의 Window Size값을 알려주고 있습니다. - 각 TCP HEADER는 가장 최근의 Window Size값을 나타내..
[0x432] IP HEADER CheckSum 구하기 - CheckSum 은 패킷이 잘 도착했는지 오류를 검출하기 위해서 존재한다고 했었는데, 그 오류 검출 하는 방법에 대해서 배워보겠습니다. - 일단 WireShark 라는 패킷 캡처 프로그램을 이용해서 아무 패킷이나 잡아봤습니다. 첫번째 사진 IP HEADER = { 4500 0028 c280 4000 7806 1209 0d6b 2a0e 79a8 7d25 } - CheckSum 값이 (16진수로) 1209 인 것을 알 수 있습니다. - 그럼 이제 계산법에 대해서 배워보겠습니다. 계산법은 아래와 같습니다. 1. Word 단위로 자릅니다. 2. 자른 Word 단위의 값들을 일단 다 더해줍니다. ( Carry 발생은 마지막에 처리 )( Carry 발생 =..
[0x433] 전송 계층 - 전송 계층은 TCP 프로토콜과 UDP 프로토콜을 주로 사용한다. - TCP 프로토콜은 모든 데이터가 목적지까지 순서대로 도착하도록 보장한다. - 패킷의 순서가 뒤바뀌어 오더라도 TCP 프로토콜은 패킷의 순서를 맞춘 후 상위 계층으로 올려 보낸다. - 중간에 있는 패킷을 잃어버린다면, 목적지 호스트의 TCP 에서는 출발지 호스트가 손실된 패킷을 재전송 할 때까지 연결을 끊지 않고 기다린다. - 이런 모든 기능은 TCP 플래그와 순서 번호로 값을 추적하므로 가능하다. [0x433] 전송 계층 - TCP Header 내부 구조 # 저번 시간에 배웠던 IP Header 가 TCP Header 앞에 있는 것을 확인 할 수 있다. ㅇ Source / Destination Port Num..
[0x432] 네트워크 계층 - 네트워크 계층은 IP 프로토콜을 사용하며 대부분 IP 버전 4 (= IPv4) 를 사용한다. - IP 주소는 xx.xx.xx.xx 형태의 4바이트 배열 형식으로 구성된다. - 네트워크 계층의 패킷 IP 헤더는 보통 20바이트 이고, 여러 필드와 비트플래그로 구성된다. [0x432] 네트워크 계층 - IP 헤더 내부 구조 ㅇ Verson ( 4 bits ) - IP 버전을 나타내며 현재는 보통 IPv4 를 사용한다. ㅇ IHL ( = Header Length ) ( 4 bits ) - Internet Header Length 의 약자이며 헤더의 길이를 나타낸다. - 4 Byte (32 bits / WORD) 단위로 헤더 길이를 표시한다. 즉, IHL 의 4배한 값이 헤더의 ..
[0x431] 데이터 링크 계층 - 데이터 링크 계층에는 이터넷 (Ethernet) 프로토콜이 있다. - 이더넷 프로토콜에서 사용하는 이더넷 주소는 MAC (Media Access Control) 주소, 하드웨어 주소 라고도 부른다. - 모든 이더넷 장치는 6 바이트의 전세계적으로 고유한 주소를 할당 받는다. ( xx : xx : xx : xx : xx : xx 형태) - 하나의 네트워크에 속하는 두 컴퓨터는 MAC 주소를 알기 전까지 서로 통신 할 수 없다. - 그러므로 네트워크에서 MAC 주소를 알아내기 위해서 ARP 를 사용한다. 의문점 : 하나의 네트워크에 속하는 두 컴퓨터는 왜 MAC 주소를 알 기 전까지 서로 통신 할 수 없을까? 해결 : ...(-ing) [0x431] 데이터 링크 계층 - ..
엔디언(Endianness)은 컴퓨터의 메모리와 같은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻하며, 바이트를 배열하는 방법을 특히 바이트 순서(Byte order)라 한다. (출처 : Wikipedia) 컴퓨터 아키텍쳐에 따라서 빅 엔디언, 리틀 엔디언, 미들 엔디언.. 등등으로 나뉜다. 주로 빅 엔디언과 리틀 엔디언이 주를 이룬다. 네트워크 바이트 순서와 호스트 바이트 순서란? 컴퓨터 아키텍쳐에 따라 호스트 바이트 순서가 다르기 때문에 서로 다른 바이트 순서를 사용하는 컴퓨터들이 데이터를 주고 받을 때 문제 발생하므로, 이 문제점을 해결하기 위해 네트워크를 통해 데이터를 전송할 때는 통일된 방식을 이용해 데이터를 전송하기로 약속을 했는데, 이것이 바로 네트워크 바이트 순서 이다. 네..