TCP헤더에 Sequence Number가 바로 packet의 고유 segment 번호다. 시퀀스 번호는 32bit 기준으로 약 4GB(용량으로 환산)정도의 경우의 수가 있다.
ACK넘버 또한 TCP헤더에 기재되어있는 것을 볼 수 있다.
연결지향이라는 관점에 대해서 알아 볼 필요가 있다. 연결이라는 것은 보안적인 측면을 고려해야한다. 사실상 TCP 연결은 착각이다.
TCP 연결은 3-way handshake가 이루어진다. 이때 단위는 segment다. 3 way-handshake는 사실상 seg번호 + MSS + 혼잡제어 정책에 대한 정보를 교환하는 행위다. 하지만 이런 방식은 보안 정책이 없어서 보안사고가 날 수 있다.
TCP 레이어에선 연결이라는 표현을 쓰지만, 1계층으로 내려가면 Link-up이라는 표현을 사용한다. TCP연결이 성립됐다에는 Virtual Circuit의 연결이 성공했다는 것을 전제에 둔다.
서버에서 큰 파일을 다운로드 받는 동안, 빠르게 NIC에 연결되어있는 LAN 케이블을 뽑게 된다. 하지만 LAN 케이블을 뽑은 시간이 일정 시간보다 크게된다면, 끊어지는 것을 볼 수 있다.
TCP연결은 가상환경의 논리적으로 유지되고있는 연결이기에 무선 환경에서 기지국을 갈아타도 핸드폰은 TCP연결이 유지될 수 있다.
이러한 특성이 파일을 다운로드 받을 때는 장점이 될 수 있지만, 실시간 게임과 같은 네트워크 환경에선 TCP연결이 끊어지는 시점이 훨씬 빠를 수 밖에 없다.
결론적으로 LAN 케이블을 뽑았을 때 TCP의 연결은 일정시간 유지된다. 그리고 연결 지속 시간은 설정에 따라 달라진다. 게임의 아이템 복사 버그도 TCP연결의 지속 현상에 의해 나타난 버그현상이다.
네트워크에서 cast 방식은 총 세가지가 있다. NAT는 network address translation이 있고 라우터는 게이트웨이로서 존재하게 된다. 라우터를 기준으로 네트워크는 내부와 외부로 나눌 수 있다. 같은 네트워크를 공유하는 PC간의 연결을 Unicast라고 부른다.
호스트번호가 2진수 기준으로 전부 1로 되어있는 곳을 Broadcast로 부른다. Broadcast는 MAC주소가 48(FFFFFFFFFFFF)가 된다. 즉 192.168.0.255으로 무언가 연결을 하면, 같은 네트워크를 공유하고 있는 모든 연결단에 Broadcast를 해준다. Broadcast는 리소스를 많이 차지하기에 네트워크의 성능을 저하시키는 주범이 된다. 시그널을 넘겨준다면, 모든 네트워크 segment에 해당 내용을 전송하게 된다.
Multicast는 특정 Group에 등록된 곳에만 신호를 보내게 된다. 사실상 L2 수준에서 봤을 땐 Broadcast처리가 된다.
SDN(소프트웨어 정의 네트워킹) 에서 가장 중요한 내용이 바로 Multicast와 Broadcast를 컨트롤 하는 일이다. 이는 클라우드와 밀접한 관계가 있다고 한다.
IP주소는 Global IP / Private IP / Lookback / Broadcast 로 나뉘어진다. v4 기준으로 8bit를 네번 사용할 수 있기에 32bit(2^32) 경우의 가지수가 있다.
Global IP -> Internet(Public, Global) ~= Router + DNS
여기서 라우터는 라우팅을 하는데, 글로벌 IP에 대해서만 Routing을 해줘서 사설 IP에 대해서는 라우팅하지 않는다.
Private IP -> 사설 인터넷. 규모가 글로벌 인터넷보단 작지만 구조는 비슷하다.
Global IP는 보통 같은 IP를 갖고있지 않지만, Private IP는 클래스에 따라서 Private IP가 정해져 있다.
그중 C클래스의 주는 우리가 익숙한 192.168.x.x를 갖고 있다. 즉 Private IP는 공유기에 많이 쓰게 된다. 공유기 IP는 Global IP를 각 PC에 공유해주는 것이다.
Loopback -> 127.0.0.1 -> Host 자신을 의미한다. 이는 사실상 localhost의 주소와 같다. 출발지와 도착지가 모두 같을 때 Loopback을 사용한다. 패킷을 만든다 해도 자신의 가상메모리 상에서 전달하게된다.