목차
TCP
TCP는 OSI 7계층 중 전송 계층에서 사용되고 있는 프로토콜
장비들간의 통신중 안정적, 순서대로, 에러없이 교환할수 있도록 하는 프로토콜이다.
TCP를 사용하는 이유는 인터넷에서 데이터를 어떻게 주고받는지 방식을 알면 왜 필요한지 알게 된다.
패킷 교환 방식
데이터를 잘게 쪼갠 후 여러 개의 회선을 통해서 보내는 방식이다.네트워크와 통신의 방식중 하나로 현재 제일 많이 사용하는 통신 방식분산투자 방식이랑 비슷하다고 생각한다.
패킷 교환 방식을 사용하면 문제점이 데이터가 정확하게 들어왔는지 문제가 있다.그래서 패킷 교환 방식을 사용하면 TCP 프로토콜이 필요한 이유다.
TCP 헤더
TCP 같은 프로토콜은 데이터에 자신의 헤더를 붙혀서 데이터의 정보를 표현한다.
Source port, Destination port
이 필드들은 세그먼트의 출발지와 목적지를 나타내는 필드로, 각각 16 bits 를 할당받는다.
이때 출발지와 목적지의 주소를 판별하기 위해서는 IP 주소와 포트 번호가 필요하다.
IP 주소는 당연히 한 계층 밑인 네트워크 계층에 있는 IP의 헤더에 담기기 때문에, TCP 헤더에는 IP 주소를 나타내는 필드가 없고 포트를 나타내는 필드만 존재한다.
Sequence Number
시퀀스 번호는 전송하는 데이터의 순서를 의미하며, 32 bits를 할당받는다. 최대 4,294,967,296 까지의 수를 담을 수 있기 때문에 시퀀스 번호가 그리 쉽게 중복되지는 않는다.
이 시퀀스 번호 덕분에, 수신자는 쪼개진 세그먼트의 순서를 파악하여 올바른 순서로 데이터를 재조립할 수 있게 된다.
송신자가 최초로 데이터를 전송할 때는 이 번호를 랜덤한 수로 초기화 하며, 이후 자신이 보낼 데이터의 1 bytes당 시퀀스 번호를 1씩 증가시키며 데이터의 순서를 표현하다 4,294,967,296를 넘어갈 경우 다시 0부터 시작한다.
Acknowledgment Number
승인 번호는 데이터를 받은 수신자가 예상하는 다음 시퀀스 번호를 의미하며, 32 bits를 할당받는다.
연결 설정과 연결 해제 때 발생하는 핸드쉐이크 과정에서는 상대방이 보낸 시퀀스 번호 + 1로 자신의 승인 번호를 만들어내지만, 실제로 데이터를 주고 받을 때는 상대방이 보낸 시퀀스 번호 + 자신이 받은 데이터의 bytes로 승인 번호를 만들어낸다.
'프로그래밍 > CS' 카테고리의 다른 글
Iass vs Pass vs Sass 정리 (0) | 2024.02.20 |
---|---|
[Design Pattern] Domain Model Pattern vs Transaction Script Pattern (0) | 2023.06.26 |