개인공부 정리의 용도이니 정확한 정보를 알고 싶으시다면 다른 사이트를 방문하시기 바랍니다.
- http://www.ktword.co.kr/test/view/view.php?m_temp1=347
TCP(Transmission Control Protocol)
- 서버와 클라이언트가 통신하기 위한 네트워크 방법
- 연결지향성 프로토콜
- 논리적 통신
- 패킷 통신
- 해더의 컨트롤비트에 여러 정보(데이터의 번호, 남은 공간의 크기 등)를 담아서 왔다갔다 함.
서버와 클라이언트가 데이터를 주고받기 위해서 연결되어야 하는데 그 연결이 이루어지는 방법은 3-way-handshake 이다.
3-way-handshake
1. 클라이언트가 서버에 '들려?'라고 SYN를 보낸다.
2. 서버가 '응 들려!' 라는 ACK와 함께 '너도 들려?'라는 SYN을 보낸다.
3. 클라이언트가 '어 나도 들려' 라고 ACK를 보냄으로 연결이 된다.
연결이 완료되면 데이터를 주고받는다. 헤더에 여러정보를 담아서 데이터를 주고 받기 때문에 데이터가 누락되거나 순서가 섞일 일이 없다.(신뢰성이 높다.) 내가 알고 있는 http 통신도 tcp 기반위에서 이루어진다.
데이터 송수신이 끝나면 연결을 끊어야 하는데 이는 4-way-handshake로 이루어진다.
4-way-handshake
1.클라이언트가 서버에게 '연결 끊어도 돼?'라고 FIN을 보낸다.
2.서버가 '응 끊어도 돼'라는 ACK를 보낸다.
아직 더 보낼 데이터가 있을 수 있기 때문에 좀 기다린다(time-out)
3.서버가 다시 한번 클라이언트에게 '데이터 다 갔어. 이제 끊을게?'라고 FIN을 보낸다.
4.클라이언트가 'ㅇㅇ 끊어'라고 ACK를 보내고 연결이 끊긴다.