Tech/WireShark

WireShark 활용하기

눈꽃산행 2019. 2. 13. 13:13
1. Retransmit

Fast Retransmit : TCP에서 Timeout, 수신자측에 발생시키는 Duplicate ACKLoss로 판단하는 것. 중복ACK는 실제로 세그멘트가 손실된 것인지 단순하 시간차에 의한 것인지 송신단에서는 정확하게 알지못함. Dup Ack가 발생하면 Loss가 발생한 것으로 간주하고 Timeout을 기다리지 않고 바로 해당 패킷을 재전송.

- Fast Recovery

Fast Recovery이전에는 Dup ACK에 의해 Fast Retransmit한 이후에 새로운 세크먼트를 전송하기 위해서는 다시 slow start를 실행.

실제 Dup ACK상태는 혼잡에 의한 것보다 특정 세그먼트의 손실에 의한 것이므로 Fast Retransmit이후 slow start가 아닌 congestion avoidance상태에서 전송할 수 있도록 하는 기법

 

 

2.1. mss Option (Maximum segment size)

TCP 패킷으로 전송할수 있는 최대 크기.

이 옵션은 커넥션 초기에 SYN flag 와 함께 전송된다.

 

2.2. Window-Scaling Option

Window size는 수신측 TCP 의 수신가능한 버퍼 사이즈를 의미한다. TCP header에서 window size16bit인데 이는 65536 이다. 하지만 이 값은 최대값이 아니며 window-scaling option 값을 통해서 이 값을 shift 할수 있다. 만약 쉬프트 값이 2라면 새로운 윈도우 사이즈는 

2^18 (262144) 가 된다. 이 옵션은 SYN flag 와 함께 전송된다.

 

 

3. TCP SLIDING WINDOW PROTOCOL

TCP parameter 에는 window size 가 있다. 이는 TCP header 에 포함되어 있다. 수신자의 리소스가 제한되어 있으므로 이를 window 사이즈로 알려주므로써 송신자가 전송량을 조절할수 있도록 한다. 다시말하면 window 사이즈는 TCP 송신자의 사용가능한 수신버퍼의 사이즈이다

송신자는 수신자가 수신버퍼에 여유가 있을때 데이터를 보낼수 있는데 TCP Header'window size' 필드를 통해서 정보를 교환한다.

 

4. MAXIMIZING TCP THROUGHPUT

 

TCP 의 성능은 데이터 전송방법, 송신자의 window size, TCP receive buffer 에서 Application 의 데이터 read에 의존한다. 위의 기법들은 네트워크 특성을 고려하지 않은 것들이다. 송신측과 수신측 사이에 느린 router 나 속도가 느린 link가 문제가 발생할수 있다. 일부 라우터들은 버퍼에 패킷을 쌓아놓거나 오버플로우 될 가능성도 있다. 우선 송신차 측의 새로운 파라미터인 congestion window에 대해 알아보도록 할것이다.

congestion window는 초기 1mss(Maximum segment size) 로 설정된다. (이 값은 최근 인터넷 성능이 좋아짐에 따라서 초기 congestion window size8, 10, 12로 높여가는 추세이다). ACK받을때마다 congestion window size 를  1씩 증가한다. 이렇게 되면 cwin 사이즈는 기하급수적으로 증가하게 된다 (1,2,4,8,16...). congestion window sizereceiver window size를 초과할 수 없다.

 

 

TCP Header Option

  

MSS

(Maximum Segment Size)

목적지에서 수신할 수 있는 세크먼트 데이터 부분의 최대 크기

- 16Bit이므로 최대 65535Byte 값을 가질 수 있음

수신 호스트에 의해 결정되며 하위 계층의 MTU 값에 의해 결정

- TCP 연결 성립과정, SYN Flag와 함께 사용

상대 시스템의 MSS파악된후 실제 데이터가 있는 세그먼트에서는 사용 안 됨

윈도우 확장인자

(Windows Scale Factor)

윈도우 확장 인자는 1Byte

기본 헤더의 윈도우 최대 크기(16Bit) , 65535Byte이므로 이는 현실적으로 충분하지 않을 경우가 존재

   예를 들어 광성유를 이용한 전송을 할 경우 65535Byte 이상으로 전송할 필요가 있을 때 이 옵션을

           사용하여 윈도우 크기를 확장할 수 있음

- Ex. 항목의 값이 2일 경우 공식에 의해 65535 * 2² 의 데이터를 전송할 수 있음

Timestamp

- TCP에서는 RTT(Round Trip Time)에 기초해 재전송 타임 아웃 길이를 결정

왕복 시간을 구하기 위해 10Byte 옵션이 필요

재전송에 대한 시간을 구할 경우 사용

- Timestamp 작동과정

    1. 송신 시스템은 송신 시점을 Timestamp 값으로 설정한 후 전송하며 수신 시스템은 송신 시점을

         Timestamp 값으로 설정하고 수신한 세그먼트의 Timestamp 값을 확인

    2. 응답용 세그먼트 에코 응답 필드에 넣으며 확인

    3. 응답을 받은 송신 시스템은 현재 시각과 그 값을 비교해 왕복 시간을 구함

 

5. SSL 패킷분석

 

  - HTTPS 포트가 443이 아닌 다른 포트인 경우 설정 변경후 패킷분석을 합니다.

 

    Edit - Preferences - Protocol - HTTP 에서 SSL/TLS Port에 대해 패킷분석할 포트를 지정합니다.