[네트워크] TCP/IP
TCP/IP
네트워크 통신에 사용되는 프로토콜은 다양하다. 그 중 라우팅에는 IP프로토콜이 주로 사용되고 IP를 기반으로 하여 통신 제어에는 TCP프로토콜이 많이 사용된다. TCP를 기반으로 하는 프로토콜로는 HTTP, SMTP, FTP 등 다양하다. 많은 프로그램등이 TCP와 IP를 기반으로 하여 통신하는 데 이를 묶어 TCP/IP라고 한다.
IP
IP는 3계층에 해당하는 프로토콜로 데이터를 패킷으로 변환하고 라우팅에 사용되는 IP주소를 설정한다. 이것으로 데이터는 전달될 수는 있겠지만 패킷이 손상되거나 전송 순서가 뒤죽박죽이 되는 등 전송에 대해서는 관여하지 않는다. 이것을 보환하기 위해 TCP가 사용된다.
TCP
TCP는 4계층에 해당하는 프로토콜로 패킷이 손상되거나 누락되지 않았는지 확인하거나 수신한 패킷은 옳바른 순서로 맞추는 등 안전하게 통신을 위해 사용되는 프로토콜이다. TCP는 안전한 통신을 위해 헤더에 여러 정보를 기록한다.
- Window Size : 안전한 통신을 하기 위해 송신자는 데이터를 한 번에 얼마나 전송할 수 있는지, 수신자는 한 번에 얼마나 데이터를 받을 수 있는지를 계속해서 확인한다. 그 과정에서 Window Size가 사용된다. 수신자가 Window Size에 자신이 받을 수 있는 데이터를 양을 기록하고 송신자는 그에 따라 데이터를 전송한다.
- Acknowledgment number : 수신자는 지금까지 받은 데이터의 양에 1을 더해 이곳에 기록한다. 100만큼의 데이터를 받았다면 101을 기록하는 것이다. 100만큼 받았으니 101부터 보내라 라는 뜻이다.
- Sequence number : 데이터의 순서가 기록되는 값으로 이 값을 이용하여 전송받은 데이터를 순서에 따라 조절한다.
TCP는 안전한 통신을 위해 통신을 시작하기 전 3-way handshake를 수행한다. 3-way handshake는 송수신자가 통신을 주고 받으며 안전하게 통신할 수 있는지 확인하는 작업이다. 이 때에는 헤더의 SYN, SYN/ACK, ACK가 사용된다.
- 송신자가 수신자에게 SYN을 통해 통신을 시작할 수 있는지 확인한다.
- 수신자는 송신자의 SYN을 받고 SYN/ACK를 통해 준비가 되었음을 알린다.
- 송신자는 수신자의 SYN/ACK를 받고 ACK를 통해 통신이 시작되었음을 알린다.