시나브로

[정리] TCP 프로토콜 본문

네트워크

[정리] TCP 프로토콜

혬혬 2020. 11. 22. 15:20
728x90

 

TCP 프로토콜이란, 연결지향이며, 신뢰성 있는 데이터 전송을 보장하는 프로토콜입니다. 

 

TCP 프로토콜에 대해 알아보도록 하겠습니다.

TCP 프로토콜의 가장 큰 특징은 1. 연결지향 2. 신뢰성이 있는 데이터 전송 입니다.

여기서 신뢰성이 있는 데이터 전송은 내가 데이터를 전송했을 때, 데이터가 누락이 되지 않고 오류없이 제대로 전송이 되는 것을 말합니다. 

그럼 '신뢰성이 있는 데이터 전송'이라는 부분에서 의문을 가질 것입니다. '그럼 다른 프로토콜은 신뢰성 있는 데이터전송을 보장하지 않나?', '신뢰성이 없는 걸 왜쓰지?' 라는 의문을 가질 수 있습니다. [ 저도 처음에는 이런 의미를 가지고 있었습니다 ]

먼저, 이러한 의문에 대해 설명하겠습니다. 네. 신뢰성이 있는 데이터 전송을 보장하지 않는 프로토콜도 있습니다. 바로 UDP 프로토콜입니다. 그럼 '신뢰성 있는 데이터 전송을 해주지 않는 UDP 프로토콜은 어디에 사용하냐? ' 라는 의문을 가질 수 있습니다. UDP 프로토콜은 데이터의 정확성이 중요하지 않는 음악이나 동영상 스트리밍와 같은 서비스에 사용됩니다. 음악과 동영상의 경우, 많은 데이터를 전송하기 때문에 일부 데이터가 잘못 전송되거나 누락되어도 영상을 보거나 음악을 듣는데에 이상이 없습니다. UDP 프로토콜에 더 궁금하다면, 아래의 게시글을 참고해주세요!

hyemsinabro.tistory.com/160

 

[ 정리 ] UDP 프로토콜

// 추후 작성예정

hyemsinabro.tistory.com

 

이제 TCP 프로토콜에 대해 알아보겠습니다. TCP 프로토콜의 정확한 정의는 OSI 7계층 중 4계층인 전송계층에 속하는 프로토콜로 네트워크 망에 연결된 컴퓨터의 프로그램 간 데이터를 순서대로, 에러없이 교환할 수 있게 하는 역할을 수행합니다.

만약 OSI 7계층을 처음들어보거나 잘 모르겠다면, 나중에 시간을 내서 공부하는 것을 추천드립니다. TCP 프로토콜을 이해하는 데 필수적인 개념은 아니나 네트워크에 중요한 개념이기에 때문에 공부하는 것을 추천드립니다.

이제 TCP 프로토콜의 특징에 대해 알아보도록 하겠습니다. 

1. 연결 지향

여기서 연결은 가상 회선을 연결하는 것입니다. 가상 회선이란, 물리적으로 전용회선이 연결되어 있는 것처럼 가상의 연결 통로를 설정하여 통신하는 방식으로 가상의 연결통로를 의미합니다. 

가상 회선을 통해 데이터를 주고 받기 때문에 데이터가 차례로 전송되게 됩니다. 이렇게 전송순서가 보장되면서 순서제어가 가능합니다. 순서제어란, 이전 데이터[패킷]의 번호를 기억하고 있다가 재입력 시 폐기하고 다음번호가 입력되었을 때 수신받습니다. 순서제어가 가능하기 때문에 모든 데이터가 중복없이 순서대로 받을 수 있습니다. => 신뢰성이 보장된다는 것이지요.

또한, 데이터를 임의의 크기로 나누어 연속해서 전송하는 방식을 사용합니다. 

TCP 프로토콜은 특이한 연결 과정이 있습니다. 바로 3 way handshake와 4 way handshake입니다. 이 연결 과정에 대해서는 밑에 게시글 링크를 참고해주세요. 이 연결과정은 중요하기 때문에 꼭 공부하시길 바랍니다!

hyemsinabro.tistory.com/157

 

[정리] 3 Way-Handshake

3 Way-Handshake 란, 전송제어 프로토콜(TCP)에서 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정/방식이다. 더 쉽게 말해서 송수신자(데이터를 주고 받는 2사람이라고 생각하면 쉬울

hyemsinabro.tistory.com

hyemsinabro.tistory.com/158

 

[ 정리 ] 4 way handshake

4 Way-Handshake란, 전송 제어 프로토콜(TCP)에서 통신을 중단할 때 사용하는 과정/방법입니다. 더 쉽게 말하면 연결을 중단할 때 한번더 확인하고 중단한다고 생각하면 쉽습니다. 여기서 전송제어 프

hyemsinabro.tistory.com

 

 

2. 신뢰할 수 있는 데이터 전송

신뢰할 수 있도록 하기 위해 흐름제어와 오류제어, 혼잡제어가 가능합니다. 차례대로 개념을 알아보도록 하겠습니다.

 

흐름제어

상대방이 받을 수 있는 만큼만 데이터를 효율적으로 전송하는 것입니다. 
내가 데이터를 보내는 속도가 상대방이 데이터를 받는 속도보다 빠르다면, 데이터는 쌓이게 될 것입니다. 이렇게 데이터가 쌓이는 공간을 버퍼라고 합니다. 하지만, 버퍼의 크기는 한정되어있습니다. 그러면 버퍼의 크기보다 더 많이 쌓이면, 데이터는 손실,즉 없어질 것입니다. 그러면 나는 분명히 보냈는데 상대방은 그 데이터를 본 적동 없는 상황이 발생하겠죠? 
이를 방지하기 위해 '흐름제어'가 있습니다. 내가 자료를 보낼 때, 버려지지 않을 정도로만 보내는거죠.

오류제어

데이터의 오류나 누락없이 안전한 전송을 보장하는 것을 의미합니다. 만약 오류나 누락이 발생하면, 재전송을 수행하여 이를 보정하는 것입니다. 

혼잡제어

네트워크의 혼잡 정도에 따라 송신자가 데이터 전송량을 제어하는 것을 말합니다. 혼잡의 정도에 대한 판단기준은 데이터의 손실 발생 유무로 판단합니다. 전송한 데이터에 누락이 발생하면 네트워크가 혼잡한 상태로 판단하여 전송량을 조절합니다.

 

세 가지 제어가 모두 비슷해보이지 않나요? 저는 처음 3가지 제어를 들었을 때, 구별하기가 어려웠습니다. 결론은 3가지 제어가 각기 독립된 제어가 아니라 신뢰성 있는 데이터 전송을 위해 연쇄적으로 연결되어 있다는 것입니다. 너무 혼란스러워하지 마세요. 이러한 제어가 있어 신뢰성 있는 데이터 전송이 가능하다는 것이지, 이것은 흐름제어고 이것은 오류제어를 말하는 거고.... 이렇게 구별하는 것이 중요한 것이 아닙니다. 

 

 

참고자료
victorydntmd.tistory.com/288 TCP 프로토콜
https://itragdoll.tistory.com/57  TCP 프로토콜
https://m.blog.naver.com/PostView.nhn?blogId=wlsqor2&logNo=40043030153&proxyReferer=https:%2F%2Fwww.google.com%2F  순서제어/흐름제어/에러제어

 

728x90

'네트워크' 카테고리의 다른 글

[ 정리 ] UDP 프로토콜  (0) 2020.11.24
[ 정리 ] 4 way handshake  (0) 2020.11.22
[정리] 3 Way-Handshake  (0) 2020.11.22
[ 시스코 네트워킹 ] Part. 1 / 2 정리  (0) 2020.05.18
Comments