본문 바로가기
728x90
반응형

공부214

[Network] TCP RDT sequence number 이전 포스팅에서 파일을 보낼 때 패킷을 보낼 때마다 sequence number를 부여했다고 했다. 이 sequence number를 통해 패킷의 순서를 확인할 수 있는데 sequence number가 구체적으로 어떻게 부여되는지 보려고 한다. 다음 그림은 파일 크기가 500,000 bytes이고 MSS(Maximum Segement Size)가 1,000 bytes일 때의 sequence number 예시이다 우선 sequence number는 byte 단위로 부여된다. 단순히 순서를 의미하는게 아니고 byte 단위로 부여되기 때문에 MSS가 1,000 bytes라면 0, 1000, 2000... 이렇게 segement의 MSS 단위로 늘어난다. sequence number.. 2023. 4. 27.
[Algorithm][백준 11758][파이썬] CCW 알고리즘을 활용하여 선분의 교차 여부 판단 어떠한 세 점 A, B, C가 다음과 같이 존재한다고 하자. 선분 AB에 대하여 점 C가 왼쪽에 있는지 오른쪽에 있는지 어떻게 판별할 수 있을까? 여러가지 방법이 존재하겠지만 외적을 사용하면 쉽게 구할 수 있다. 우선 외적의 정의부터 보자. 벡터 u와 벡터 v의 외적을 구하는 공식은 아래와 같다. sin 값은 180도를 기준으로 부호가 바뀐다. 0~180도 전까지는 양수, 180도는 0, 180~360도 전까지는 음수이다. 위의 점 A, B, C도 이를 이용해보자. 먼저 선분 AB, AC를 만들어본다. 벡터 AB와 벡터 AC의 외적 값이 양수라면 C는 선분 AB의 오른쪽에 존재하는 것이고 음수라면 왼쪽에 존재하는 것이다. 다음 그림은 C가 선분 AB의 왼쪽에 있을 때이다. 각도가 180도 넘어가기 때문에.. 2023. 4. 24.
[Algorithm] 펜윅 트리, 이진 인덱스 트리, BIT(Binary Indexed Tree)로 구간 합 문제 해결 어떤 배열의 특정 범위에 해당하는 수의 합을 구할 때 부분 합을 사용한다. 이 부분 합의 전처리 과정의 시간 복잡도는 O(N)이고 원하는 값을 구할 때의 시간 복잡도는 O(1)이다. 전처리 과정 sum[ i ]의 값을 arr의 인덱스 0부터 인덱스 i 까지의 합이라고 정의하고 아래와 같은 배열이 있다고 하자. sum[0]은 1일 것이고 sum[1]은 9일 것이고 sum[2]는 12일 것이다. 이를 구하는 과정을 파이썬을 나타내면 다음과 같고 시간 복잡도는 O(N)이다. arr=[1, 8, 3, 4, 6, 7, 4, 4] sum=[0 for _ in range(8)] sum[0]=arr[0] for i in range(1, 8): sum[i]=sum[i-1]+arr[i] 원하는 값 구하기 그런데 위 sum.. 2023. 4. 23.
[Network] RDT (Reliable Data Transfer protocol) https://growth-coder.tistory.com/154 이전 포스팅에서 TCP가 reliable한 이유에 대해서 알아보았다. 이번 포스팅에는 정확히 어떤 방식으로 TCP가 reliable한지 RDT의 버전을 기준으로 공부해보려고 한다. FSM(Finite State Machine)을 사용할 예정이므로 간단하게 알고가면 좋다. 아래 그림에서 보다싶이 위에는 발생한 이벤트, 아래는 이벤트가 발생하면 진행할 액션이다. 그리고 점선 화살표가 나올텐데 이는 가장 처음 상태라는 의미이다. RDT 1.0 sender sender부터 보면 sender의 첫 상태는 application 계층으로부터 call을 기다리는 상태이다. 기다리는 상태에서 application 계층에서 rdt_send를 호출하면 tra.. 2023. 4. 22.
728x90
반응형