TCP는 연결 지향적 연결을 추적 할수있다. 그러면 처음에 셋업을 해야한다. 시작은 SYN을 셋업한다. 받은 시퀀스 남바+1을 해서 보낸다.(ACK)
예) 내가 시퀀스 남바를 1000을 보내면 ACK는 1001로 온다.
종료는 FIN을 셋업한다. 그 종료에 대해 ACK를 보내고 그다음에 FIN을 보낸다(4웨이)
TCP 송신지 포트 (내가 WEP에 접근 했다고 가정, 80번포트에 접근을 하면 접근을 했다고 ACK를 보내야 하는데 받을 포트 주소가 필요하다)
urg,ack,psh,rst,syn(3웨이 핸드쉐이킹 싱크),fin(종료 과정)
윈도우 크기(흐름제어, 플로우컨트롤이 가능 TCP는 뭔가를 보내면 ACK를 받는다. 하나를 보내고 그다음 것을 보내고 싶지만 ACK가 안오면 보낼수 없다. 그래서 ACK가 올 때깢지 기다려야 한다. 하나 받고 하나 주는건 효율이 안조흐니 졸라리 보내고 ACK를 받으면 좋겠다, 그 보낼 사이즈가 윈도우 사이즈다. 받는놈은 일단 받은 정보를 한곳에 임시 보관을 했다가(버퍼) 처리해야 한다.그럼 수신측에서 송신측에게 윈도우 크기좀 줄여서 보내라 하고 통신을 한다. 그러면 크기가 크게왓다 작게왓다 좆대로 오는데 이것이 흐름 제어이다.)
시퀀스 남바( 0부터 시작해서 최대값을 초과하면 다시 0으로 돌아온다.)
플래그 (u a p r s f)
3웨이 핸드 셰이킹 (2번째 5번째 셋팅해서 보낸다, 보내는 숫자는 그냥 지가 시작하고 싶은 숫자를 보낸다.)
연결 종료 (fin6번째 셋팅해서 보낸다. 그럼 fin에 대한 ack를 보낸다)
2계층에서 crc에러가 뜨면 2계층에서 해당되는 프레임을 버린다.그럼 4계층에서 이걸 알수가 없다. 그럼 잃어버린 데이터를 어떻게 찾을까 혹은 잃어버린 사실 자체를 어떻게 알까 송신측에서 보내고 난다음 타이머를 돌린다 일정 시간이 지났느데도 ACK가 안오면 데이터를 재전송한다. 중간에 데이터가 유실 됬으면 유실되기 전에 보낸 ACK를 보낸다
슬라이딩 윈도우 ACK가 오기전까지 버퍼에서 보관한다 ACK가 오면 스르르르ㅡㄱ 이동함
UDP (DNS, DHCP) DNS은 TCP UDP 둘다 사용하는데 일반적인 사용자는 UDP이다.
UDP 헤더 송신지 포트 번호, 수신지 포트 번호, 총 길이, 검사합 끝 (그리라고 하면 그리겠쬬?, TCP를 그리고 각 기능의 명칭과 기능을 적으시오)
댓글 없음:
댓글 쓰기