일일 정리

Go-Back-N 프로토콜, 파일 시스템과 파티션

mysecurity 2025. 1. 16. 17:28

목차

1. Go-Back-N 프로토콜

2. 파일 시스템과 파티션

 

Go‐Back‐N 프로토콜

 

윈도우(window): 전송되었지만 확인이 안된 패킷을 위해 허용할 수 있는 시퀀스 넘버의 범위다. 한번에 패킷을 얼마나 보낼 수 있는 지를 나타낸다.

 

send_base(sb)  : 윈도우의 가장 오래된 패킷이다. 

 

타이머(timer): 패킷을 보내고 응답이 오기까지 합리적인 시간 제한을 설정한다.

 

타임아웃(timeout): 타이머의 시간이 다 되면 발생하는 이벤트다. 타임아웃 이벤트가 발생하면 패킷이 전송 중 소실된 것으로 판단한다.

 

송신자 측 설정

- 타이머 설정: send_base에만 타이머를 설정한다.

 

- 상위 레이어에서 데이터가 수신된 경우: 패킷의 다음 시퀀스 넘버를 검사하고 윈도우 내에 있으면 패킷을 전송한다.

 

- 타임아웃(n) 설정: 타임아웃 이벤트가 발생하면 send_base에서부터 윈도우 내의 모든 패킷을 재전송한다.

 

- ACK(n)이 수신된 경우

n < send_base    : 무시한다.

n >= send_base  : send_base를 윈도우 내의 미확인 패킷 중 가장 오래된 패킷으로 이동한다. 윈도우 내의 미발송 패킷을 전송한다.

 

ex) ACK9를 기다리다가 ACK10이 오면 send_base를 11로 이동시키고 미발송 패킷을 전송한다.

 

수신자 측 설정

- 패킷 설정: ACK는 누적 ACK를 송신한다. 내가 어디 패킷까지 잘 받았는지를 나타낸다.

       

out-order (내가 기다리던 패킷이 아닌 경우) : 패킷을 버린다.

in‐order (내가 기다리던 패킷인 경우)           : 정상적으로 처리한다.

이외의 경우                                                  : 무시한다.

 

Go-Back-N 통신 시나리오는 다음과 같다.

Go-Back-N 통신 시나리오

 

 

Go-Back-N 패킷 손상 발생시 통신 시나리오는 다음과 같다.

Go-Back-N 패킷 손상 발생시 통신 시나리오

 

파일 시스템과 파티션

 

윈도우 디스크 관리 창

 

일반인의 관점으로 보기에 우리는 c드라이브나 d드라이브를 쓰는것으로 보인다. 엔지니어의 관점으로 보면 우리는 디스크를 쓰는게 아니라 디스크안에 파티션을 나눠 그 파티션을 사용하는 것이다.

 

파일 시스템의 이해

파일 시스템: 파일을 저장하기 위한 운영체제의 논리적인 구조이다. 각 OS들은 여러 개의 파일 시스템을 지원한다.

- Linux : xfs, ext4, ext3, jfs, ReiserFS 등이 있다.

- Windows : FAT, FAT32, NTFS 등이 있다.

- UNIX : UFS(UNIX File System), ZFS 가 있다.

- IOS : APFS(Apple File System), HFS+ 가 있다.

 

유닉스에서 파일 시스템을 생성한다는 표현은 윈도우에서 파일 시스템을 포맷한다는 표현과 뜻이 같다.

 

파티션: 물리적인 디스크를 논리적인 저장영역으로 구별한 것이다.

 

MBR: 디스크의 앞쪽이 물리적으로 정의되어있는 섹터이다. OS가 직접 사용하지 않으며 부트로더가 저장된다.

 

● 파티션의 종류

파티션은 크게 4개까지 쪼갤 수 있다. (프라이머리 + 익스텐디드 <= 4)

 

- Primary partition

물리적인 디스크에 독립적으로 존재하며 파일 시스템을 생성한다. 운영체제가 직접 사용 가능하다. 물리적인 디스크마다 4개까지 생성할 수 있다.

 

- Extended partition

디스크마다 1개까지 생성 가능하다. 직접 사용할 수 없고 logical partition으로 분할 사용해야 한다.

 

- Logical partition

Extended partition내에 만들어진다. Extended partition내부에서 쪼개지는 것은 최대 파티션 갯수 4개에 구애받지 않는다.

 

파티션을 포맷할 때에는 프라이머리와 로지컬을 포맷해야한다.

 

 디스크 장치파일

- SCSI, SATA 

디스크: /dev/sda, /dev/sdb, /dev/sdc

파티션: /dev/sda1,  /dev/sda2,  /dev/sda3

 

- IDE (지금은 거의 없어졌다.)

디스크: /dev/hda, /dev/hdb, /dev/hdc

파티션: /dev/hda1,  /dev/hda2,  /dev/hda3…

 

가상머신에 하드디스크를 추가한 모습

위와 같이 SATA로 하드디스크를 새로 생성하고 서버에 들어가 디스크와 파티션을 확인하면 다음과 같은 화면이 나오는 것을 확인할 수 있다.

/dev/sdb 하드 디스크가 새로 생성된 모습

 

위에서 확인한 바, 하드 디스크를 생성하면 sda, sdb, sdc... 와 같은 형식으로 생긴다. 그리고 sda하드 디스크를 파티션 분할하면 각각의 파티션 이름은 sda1, 2, 3, 4 와 같은 형식으로 생긴다. 로지컬 파티션으로 분할했다면 sda 5, 6... 과 같은 형식으로 생긴다.

파티션을 만든 후 반드시 포맷하고 mount해야 쓸 수 있으므로 아직 /dev/sdb 디스크는 사용할 수 없다.

mount: 특정 파티션 디바이스를 특정 디렉토리에 연결하는 작업이다.