336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기본적으로 TCP 프로토콜은 초기 3Way Handshaking 후
데이터 전송 시 수신자의 윈도우 사이즈만큼(65536bytes) 수신확인(Ack) 없이 전송한다.(윈도잉)


Next Squence Number 계산


1) Client, Seq는 [ 58 2e 7d 4d ], 3Way Handshaking 시작

Client  ----- [ TCP/syn ] ---->  Server

[ 58 2e 7d 4d ] Seq

[ 00 00 00 00 ] Ack (Server에서 보낸 확인 패킷이 없으니 Acknowledgment Number는 0)


2) Server, Seq는 [ 7c b7 34 26 ], Client의 Seq가 [ 58 2e 7d 4d ]인 패킷을 수신확인, 다음 Client의 Seq는 [ 58 2e 7d 4e ]

Client  <---- [ TCP/syn/ack ] ------  Server 

                                    [ 7c b7 34 26 ] Seq

                                    [ 58 2e 7d 4e ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


3) Client Seq는 [ 58 2e 7d 4e ], Server의 Seq가 [ 7c b7 34 26 ]인 패킷은 수신확인, 3Way HandShaking 종료

Client  ----- [ TCP/ack ] ---->  Server

[ 58 2e 7d 4e ] Seq

[ 7c b7 34 26 ] Ack (Sever에서 보낸 패킷에 대한 확인 응답)


1) Client, Seq는 [ 58 2e 7d 4e ]

(TCP Segment 길이가 386(0x182), Server가 정상 수신하면 Server의 Ack는 [ 0x582e7d4e + 0x182 = 58 2e 7e d0 ])

다음 Server의 Seq는 [ 7c b7 34 27 ]

Client  ----- [ HTTP/psh,ack ] ---->  Server

[ 58 2e 7d 4e ] Seq

Next Sequence Number --> Seq + TCP Segment Length = [ 58 2e 7e d0 ]

[ 7c b7 34 27 ] Ack (Server의 Next Sequence Number)


2-1) Server, Seq는 [ 7c b7 34 27 ]

Client의 TCP Segment에 대한 확인응답 [ 0x582e7d4e + 0x182 = 58 2e 7e d0 ] 

Client  <---- [ TCP/ack ] -----  Server

[ 7c b7 34 27 ] Seq (다음 패킷부터 Data를 보내고 마지막 패킷에서 psh,ack로 데이터 전송 종료를 알림)

[ 58 2e 7e d0 ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


2-2) Server, Seq는 [ 7c b7 34 27 ], HTTP/1.1 200 OK

(TCP Segment 길이가 1026(0x402), Client가 정상 수신하면 Client의 Ack는 [ 0x7cb73427 + 0x402 = 7c b7 38 29 ])

다음 Client의 Seq는 [ 58 2e 7e d0 ]

Client  <---- [ HTTP/psh,ack ] -----  Server

[ 7c b7 34 27 ] Seq (HTTP/psh,ack)

Next Sequence Number --> Seq + TCP Segment Length = [ 7c b7 38 29 ]

[ 58 2e 7e d0 ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


3) Cient, Seq는 [ 58 2e 7e d0 ]

(TCP Segment 길이가 387(0x183), Server가 정상 수신하면 Server의 Ack는 [ 0x582e7ed0 + 0x183 = 58 2e 80 53 ])

다음 Server의 Seq는 [ 7c b7 38 29 ]

Client  ----- [ HTTP/psh,ack ] ---->  Server

[ 58 2e 7e d0 ] Seq

Next Sequence Number --> Seq + TCP Segment Length = [ 58 2e 7e d0 ]

7c b7 38 29 ] Ack (Server에서 보낸 패킷에 대한 확인 응답 + Server의 Next Sequence Number)

.

.

.

.




'Analysis > Network' 카테고리의 다른 글

[VPN] 터널링  (0) 2016.08.09
Tcpdump usage examples  (0) 2016.04.26
HTTPS와 SSL 이해  (0) 2016.04.15

+ Recent posts