본문 바로가기

오늘 공부 스케줄 끄적끄적..

2024-09-10 갓생 살기 5일차

어제 프로젝트 퍼블리싱을 새벽까지 수정을 했더니.. 

오늘 늦게 일어났다.. ㅜㅜ 

일상이 망가지지 않도록 밤 새는건 자제해야지..

넘 피곤하다 ㅜㅜ 

 

1. 네트워크 공부

 

어제는 패킷의 에러와 패킷 로스에 대해서 공부했다. 

간단히 복습하자면 패킷 에러 메커니즘은 에러 디텍션, 피드백, 리트랜스미션, 시퀀스 번호가 있고 

패킷 로스는 타임아웃 이 있다. 

어제까지 공부한 것은 한 패킷을 보내고 응답을 보내고, 또 한패킷을 보내고 응답을 보내는 형식이었는데

이렇게 하나씩 보내면 트랜스미션 타임(패킷 하나 보내는 시간)이 오래걸리기 때문에 

2가지의 파이프라인 프로토콜이 있다고 한다. 

첫번째는 Go-Back-N이라는건데

이 때 Sender가 보낼 수 있는 패킷 사이즈는 window사이즈 (n개) 이다. 

n개가 4개라고 가정할 때,

 

정상적으로는 

 

  • 송신자: 프레임 0, 1, 2, 3을 보냄.
  • 수신자: 프레임 0을 먼저 받고, 0에 대한 ACK를 송신자에게 보냄 .
  • 송신자: 프레임 4를 보냅니다 (송신자는 ACK를 기다리지 않고 다음 프레임을 전송할 수 있음).
  • 수신자: 프레임 1을 받고, 1에 대한 ACK를 송신자에게 보냄.
  • 송신자: 프레임 5를 보냄 .

 

이런식이다. 

 

그런데 만약 중간에 패킷이 정상적으로 전달이 안되는 경우는 n개 만큼 돌아가서 다시 재전송을 하는것이다. 

 

  • 송신자: 프레임 0, 1, 2, 3을 보냄 .
  • 수신자: 프레임 0을 받고, 0에 대한 ACK를 송신자에게 보냄 .
  • 송신자: 프레임 4를 보냄 .
  • 수신자: 프레임 1을 받고, 타임아웃이 발생한 상태를 처리. 프레임 1에 대한 ACK가 송신자에게 도착하지 않아서 송신자는 타임아웃이 보냄 .
  • 송신자: 타임아웃이 발생했기 때문에 프레임 0, 1, 2, 3을 다시 재전송.

 

 

그리고 두 번째는 Selective repeat으로 

패킷이 제대로 전송되지 않은 것만 다시 전송하는 것이다. 

예를들어 2번 패킷이 유실 되었다고 치면

 

  • 송신자: 프레임 0, 1, 2, 3을 보냄  .
  • 수신자: 프레임 0을 받고, 0에 대한 ACK를 송신자에게 보냄  .
  • 송신자: 프레임 4를 보냄  .
  • 수신자: 프레임 1을 받고, 1에 대한 ACK를 송신자에게 보냄  .
  • 송신자: 프레임 5를 보냄  .
  • 수신자: 프레임 2를 받지 못하고, 프레임 3을 받음. 프레임 3을 버퍼에 저장.
  • 송신자: 프레임 6을 보냄  .
  • 수신자: 프레임 4를 받고, 4에 대한 ACK를 송신자에게 보냄  . 프레임 4를 버퍼에 저장.
  • 송신자: 프레임 7을 보냄  .
  • 수신자: 프레임 5를 받고, 5에 대한 ACK를 송신자에게 보냄  . 프레임 5를 버퍼에 저장. 프레임 2가 누락된 것을 인식하고 송신자에게 프레임 2를 재전송하도록 요청.
  • 송신자: 프레임 2를 재전송.

 

 

또 마지막으로 배운건 Selective repeat 딜레마인데, 

시퀀스 넘버가 윈도우 사이즈와 밀접한 연관이 있기 때문에 발생한다. 

예를들어 윈도우 사이즈가 3이고 

시퀀스는 0,1,2,3이 있다고 가정하면

 

- 송신자: 윈도우 사이즈가 3일 때, 프레임 0, 1, 2를 보냄

- 수신자: 프레임 0, 1, 2를 모두 받고, 프레임 3을 기다림

- 송신자: 프레임 3을 보내야 하는데, 프레임 0이 재전송(프레임 3이 손실되었거나 ACK가 손실된 경우)

- 수신자: 프레임 0을 받고, 이는 프레임 3의 재전송으로 착각할 수 있으며, 이를 새로운 프레임 0으로 인식할 수 있음. 이로 인해 수신자는 중복 프레임을 수신하게 됨.

 

 

 

그래서 이 문제를 해결하기 위해서는 시퀀스 넘버를 늘리는 방안이 있다.

 

2. 자료구조 

어제는 단방향 링크드리스트를 배우고 

오늘은 더블 링크드 리스트를 배움 

next값, data값, prev값을 갖고 있음

 

3. 알고리즘

DP 문제 푸는 방식에 대해서 배움. 

작은 문제를 풀어서 메모이제이션을 통해 큰문제를 푸는건데

아직 작은문제의 공통점들을 찾아내는게 어려움 ㅜㅜ 

좀 더 공부가 필요할 것 같음

문제를 많이 풀어보자! 

 

4. SQL 

서브쿼리, 분기문, Union, Union All 문제를 풀어봄

 

5. 자바 공부 

가벼운 기초개념 복습 

함수 - 단독 모듈 => 함수의 경우는 스택 메모리에 저장, 함수가 호출 될 때 메모리 공간이 스택에 생성되. 함수 수행이 끝나면 자동으로 반환되는 메모리(지역변수, 지역함수) 

메서드 - 함수의 일종이지만 클래스 내의 멤버함수를 지칭

인스턴스 - 클래스를 객체로서 생성

참조변수 - 생성된 인스턴스를 가리키는 주소값

 

자바를 처음에 배울 때는 용어도, 개념도 헷갈렸는데 확실히 

다른 CS랑 자료구조랑 같이 공부하니깐 이해가 빠른거 같음.. 

 

6. 이제 할일은 

자소서랑 포트폴리오 수정!