간단한 에코 서버를 만들었는데, 클라이언트가 서버가 돌려준 패킷을 받질 않는다...
Wireshark라는 패킷 분석 프로그램으로 해당 포트를 감시해봤다.
의도한 패킷의 구조로 전송이 있긴 하다.
"hahahahaha" 데이터가 보인다. Unicode로 인코딩 되어서 각 문자마다 2바이트인걸 볼 수 있다.
그래서 받았니? 이때까지 존재만 알고 넘어갔던 TCP 연결 설정, 데이터 전송을 다시 짚고 넘어 가야겠다.
3-Way Handshake
방향 | 플래그 | 넘버 | |
---|---|---|---|
1 | C -> S | SYN | Seq(a) |
2 | S -> C | SYN, ACK | Seq(b), Ack(a+1) |
3 | C -> S | SYN | Ack(b+1) |
* C = Client, S = Server
(정상적인) 데이터 전송은 송신 패킷, 수신 완료 패킷 2번으로 나뉜다.
방향 | 플래그 | 넘버 | |
---|---|---|---|
1 | A -> B | (PSH), ACK | Seq(i), Ack(j), Len(n) |
2 | B -> A | ACK | Seq(j), Ack(i+n) |
Wireshark 덤프를 보면, 두 번의 패킷 전송은 정상적으로 일어났다. 좋지만 안좋은 소식...
To be continue...