현재의 인터넷은 패킷 스위칭 방식의 네트워크이다. 따라서 사용자들이 자신이 보낸 데이터를 패킷이라는 단위로써 전송을 하기 때문에 네트워크 자원들 (라우터 등) 이 패킷 단위로 처리하기 때문에 time sharing 방식으로 공유한다. 따라서 네트워크는 Circuit switching 을 사용하지 않기 때문에 생기는 문제들이 있었다. 


라우터에서 발생하는 딜레이와 패킷 로스가 있다. 딜레이는 라우터 안에 들어갔다가 패킷이 빠져나오는 경우 큐에 걸려서 대기하는 시간이었고 패킷 로스 같은 경우는 큐잉 딜레이가 아닌 큐 자체가 가득 찼기 때문에 패킷 유실이 발생하는 것이다. 그리고 라우터에서 지연이 발생하는 경우, 이러한 경우는 필연적이다. 

  • processing delay : 라우터에 패킷이 들어가서 어느 방향으로 나갈지 검사하는 시간 

  • queueing delay : 방향을 결정하고 큐에 넣고 큐에서 대기하는 시간

  • transmisstion dalay : 큐의 가장 앞에 나가서 링크 넘어로 나가는 시간

  • propagation delay : 링크를 타고 다음 목적지, 라우터로 도달하는 시간 

HTTP Overview

  • Http 는 request & response 두 개의 메세지가 존재하며 command GET/POST 방식이 존재한다. 또한 http 의 테크닉이라 불리우는 웹 캐시(웹 프록시) 가 있다. 웹 캐시 혹은 웹 프록시가 클라이언트의 같은 네트워크 로컬에 존재하여 서버로부터 리소스를 카피하고 있다가 해당 서버로 리소스 요청을 하지 않기 때문에 조금 더 효율적이다. 하지만 캐시를 사용함으로써 발생하는 일관성 문제가 존재하고 있다

왜 웹캐시가 좋은것인가?


DNS

  • 브라우저 창에서 호스트 네임을 입력했을 때 해당 호스트 네임과 매핑되는 IP 주소를 반환하는 시스템을 의미한다.  계층화 그리고 분산화 시켜놓은 것이 현재의 DNS 시스템이다.

UDP & TCP


TCP 헤더의 구조

- 포트 번호를 통해서 멀티플렉싱 & 디멀티플렉싱

- 시퀀스 번호를 통해서 내가 보내는 세그먼트의 순서를 트랙킹하도록

- ACKs 번호를 내가 받는 세그먼트의 데이터를 알수 있도록

- 데이터 송수신에서 세그먼트 번호를 안다는 것은 In-Order Delivery 를 가능하도록 해준다.

- receive window 는 내 리시브 버퍼가 어느정도의 공간이 있는지를 위함 flow - control 을 위함

- checksum 은 에러 디텍션을 위함

- 중간의 한 비트짜리 플래그가 존재한다. ( SYN, FIN, ACK )

- TCP 는 byte 단위로 시퀀스 번호가 붙는다.

- TCP 의 ACKs 번호는 Cumulative ACKs 로써 내가 잘 받은 시퀀스 번호의 다음번호를 붙인다.

- 연속해서 TCP 패킷이 유실된 경우, 타이머 시간이 만료되고 

- 동일한 ACKs은 연속해서 3번 받으면 duplicate ACKs 라고 한다.


TCP 에서 패킷이 재전송하는 경우,

1) timeout

2) 3 duplicate ACKs


윈도우 내부에 있는 패킷들은 단순히 보낸다. 하지만 재전송하는 경우는 정의가 되어있기 때문에 함부로 재전송되는 것이 아니다. 따라서 패킷이 재전송되는 타당한 근거(timeout / 3 duplicate ACKs)가 마련되고 재전송하고 센더 측에서 In-Order Delivery 에 따라 순서에 맞게 받은 패킷들을 애플리케이션 계층으로 올린다. 


이 부분에 대해서 여러 시나리오를 가정하여서 공부해야한다.


new transmission : 윈도우 공간이 밀려서 새로운 데이터가 바로 전송하는 경우

re transmisstion : 타당한 근거에 따라서 재 전송되는 경우를 의미한다. 

두 개는 전혀 다른 의미를 지니고 있다.


리시버의 액션 중에서 Delayed ACKs

원래 리시버는 세그먼트를 받고 해당 세그먼트에 이후의 ACKs 를 보내야 한다. 하지만 ACKs 자체를 바로 보내지 않고 잠시 기다렸다가 Delayed ACKs를 보낸다.


윈도우 이동하는 것에 대한 개념

윈도우 이동한 이후에 일어나는 것

ACKs 가 들어왔고 해당 ACKs 는 새로운 ACKs 이다. 그럼 윈도우 사이즈를 해당 ACKs 만큼 옮긴다.

(1) 타이머를 끄고 새롭게 세팅

(2) new transmission 을 실시한다.


flow control

congestion control


[ 참고동영상 ]


[ 컴퓨터 네트워크 ]

Posted by doubler
,