머리말
학교 네트워크 프로그래밍 강의 교재이다.
하지만 수업은 4장 http부터 진행 되어 1,2,3장을 선행하려고 작성하게 됨
TCP/IP 기본동작
IP헤더
ip패킷 = ip헤더 + 데이터
ip헤더는 32비트(4바이트)의 배수이다.
보통 20바이트 길이를 가짐
IP헤더구성
- 버전 : 현 ip프로토콜의 버전(ipv4) 4비트
- 헤더길이 : ip 헤더의 길이 32비트 단위로 표시
- tos(type of sevice) : ip데이터의 서비스 타입
- 전체길이 : 전체 ip패킷의 길이 16비트
- ID : ip분할될때 여기에 ID값 저장
- 플랙 : 분할의 정보(비트 0: 사용 안함, 비트1 : DF(don't fragmaentaion)플랙. 0:분할 가능, 1: 분할 불가능, 비트 2: M(more) 플랙. 마지막패킷인지 여부 0일때 마지막 패킷)
- 오프셋 : ip분할에 경우 본래 데이터의 오프셋 값
- TTL(time to live) : 패킷이 네크워크에 존재할 수 있는 시간(초)
- 프로토콜 : ip패킷을 전달하는 상위 데이터 프로토콜 의미(TCP, UDP 등)
- 헤더 체크섬 : 헤더 부분 에러 조사(전송 도중 비트 에러발생한 경우만)
- 소스 ip주소 : 송신 측 ip주소
- 목적지 ip주소 : 수신 측 ip주소
ip패킷 분할
네트워크 전송선을 통해 실제 데이터를 주고 받는 링크 계층은 한번에 전송할 수 있는 최대 패킷크기(MTU)가 정해져있다. 데이터가 MTU보다 크면 분할을 때림
ip분할을 위해 ip헤더의 id필드, 플랙, 오프셋의 필드 값이 사용됨
수신측에서 플랙필드의 M플랙이 1로 된 ip패킷을 받으면 내부의 재조립 타이머를 시작
트랜스포트 계층
트랜스포트 계층은 데이터를 각 호스트의 애플리케이션 프로세스 사이에 전달하는 기능
TCP 헤더
TCP가 제공하는 기능
- 스트림 전송 : 순서에 맞게 전송
- 가상 회선 연결 : 상대방이 수락을 하면 마치 직접 회선한것 같은 효과
- 버퍼 전송 : 버퍼 기능 사용 가능
- 양방향 통신