OSI 7 Layer Model
Open System Interconnection
Physical Layer
Datalink Layer
- 맥 주소를 활용해 통신
- 정보의 흐름과 오류를 관리함
- 프레임단위로 데이터 전송
- 에러검출, 재전송, 흐름제어
Network Layer
- 데이터를 목적지까지 안전하고 빠르게 전달 >> 라우팅
- 주소부여, 경로설정
Transport Layer
- 사용자들이 신뢰성 있는 데이터를 주고받을수 있게 함.
- 패킷들의 전송이 유효한지 확인하고 전송에 실패한 패킷들을 다시 전송함.
- TCP, UDP
Session Layer
- 데이터 통신을 위한 논리적 연결
- 응용프로그램의 관점
- 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공
- TCP/IP 세션을 만들고 없애는 책임
Presentation Layer
- 코드간 번역을 통해 시스템간 데이터 형식 차이를 수정함
- 예시 : EBCDIC 인코딩 >> ASCIII 인코딩
- MIME 인코딩, 암호화
Application Layer
Socket API
-
Application Layer와 Transport Layer 사이에 위치함.
-
Peer-to-Peer model 보다는 Client-Server communication model 에 가깝다.
-
Kernel-level programming 보다는 User-level programming에 가깝다.
Programming
- Program == code
- Process == Instance of program
Socket은 System call을 이용해 동작한다.
- socket
- bind
- connect (by client)
- listen
- accept
- write, send, sendto
- read, recv, recvfrom
- close
Client-Server model
Client
- 서버에 서비스 요청
- 서비스를 사용하는 사용자 혹은 사용자의 단말기를 가리키는 말이다.
- 직접 열고 직접 닫는다.
Server
- 클라이언트에 서비스 제공
- 항상 열려있고 알아서 닫힌다.
Iterative server
- Client의 서비스 요구를 순서대로 처리함.
- 구현이 간단하나 기다리는 시간이 길어질수 있다.
Concurrent server
- 여러 요구를 동시에 서비스 가능하다.
- 서비스 처리시간이 길거나 불규칙할때 사용한다.
위에서 아래로 읽기+++
ADDRESS
Internet address, IP
Physical addess = MAC Address < 6 byte>
- Netid : 전체 네트워크에서 각 네트워크를 구분하기 위한 주소
- 한 네트워크 안에서는 Netid가 같아야 통신 가능하다.
- Hostid : 각 네트워크 안에서 장비를 구분하기 위한 주소
- Multicast : 할당하는게 아니라 필요할때 쓰고 없어진다.
특별한 IP 주소
Loopback address
127.0.0.1
10.0.0.2
Broadcast address
- 특정 네트웍 전체에 패킷을 전송할때 사용하는 IP 주소
Local
- 255.255.255.255
Directed
- NetID를 제외한 모든 bit를 1로 치환
- 예시 : 155.230.255.255
Multicast
224~239.*.*.*
Multiplexing
아래 두 프로토콜은 IP와 Transport Layer 사이에 위치한다.
ICMP, Internet Control Message Protocol
- 호스트가 없거나 포트가 닫혀있는 등의 에러 상황에 대해, IP헤더에 기록된 출발 호스트로 에러에 대한 정보 전송
Error reporting
Destination unreachable (type = 3)
Source quench (type = 4)
Time exceeded (type = 11)
Parameter problem (type = 12)
Redirection (type = 5)
Query messages
Echo request or reply (type = 8 or 0)
Timestamp request & reply (type = 13 or 14)
Address mask request & reply (type = 17 or 18)
Router solicitation and advertisement (type = 10 or 9)
IGMP, Internet Group Management Protocol
- 서브넷(로컬 네트워크) 상의 멀티캐스팅 멤버십 제어(그룹 관리)를 위한 프로토콜
- IPTV와 같은 멀티캐스트 실시간 컨송을 위해 사용함
- Class D IP 주소를 사용한다.
아래 두 프로토콜은 IP와 Datalink Layer 사이에 위치한다.
ARP, Address Resolution Protocol
- IP주소를 기반으로 MAC 주소를 알아온다.
- LAN 환경에서의 통신은 MAC주소를 기반으로 하기에 ARP를 통해 IP주소를 기반으로 MAC 주소를 알아와야 한다.
Broadcast -> Unicast 순서로 이루어진다.
RARP, Reverse Address Resolution Protocol
- ARP와는 반대로 MAC 주소를 기반으로 IP주소를 알아내는것.
IPv6
- 128비트 / 16바이트로 구성된다.
- 16진수와 콜론으로 표기한다.
- 예시 : 2001:0db8:85a3:08d3:1319:8a2e:0370:7334
- ICMPv6를 이용해 ARP와 IGMP 모두 처리 가능.
UDP, User Datagram Protocol
- 신뢰성이 보장되지 않는 데이터 전송 프로토콜
- 용량이 가볍고 송신속도가 빠르다.
TCP, Transmission Control Protocol
- Packet switching 방식으로 인한 데이터 유실이나 전달 속도 차이 문제를 해결하기 위해 나왔다.
- 신뢰성 기능
- 흐름 제어 / Flow Control
- 수신측 버퍼에 의존해 오버플로우 방지
- 수신측의 ACK를 받기 이전에 송신측에서 보내는 데이터의 양을 조절함
- Sliding window를 사용
- 에러 관리 / Error Control
- ACK, 재전송
- 혼잡 제어 / Congestion Control
- 연결 관리
- 연결 생성
- Three way handshaking
- 통신 시작 요청 / SYN
- 통신 요청 응답 / SYN-ACK
- SYN-ACK에 응답 / ACK
- 연결 해제
- Four way handshaking
- 연결 종료 요청 / FIN
- 연결 종료 요청 응답 / FIN-ACK
- 연결 종료 요청 / FIN
- 연결 종료 요청 응답 / FIN-ACK
- 연결 리셋
- TCP 컨트롤 플래그
IP 주소 / 포트 번호
- IP주소는 호스트를 지정, 포트 주소는 호스트 내부에서의 프로세스를 지정한다.
IANA range
- 특정한 쓰임새를 위해서 IANA에서 할당한 TCP 및 UDP 포트 번호
0 ~ 1023 / Well-Known port ------- IANA에 의해 할당 및 지정
1024 ~ 49151 / Registered port --- 지정되진 않았으나, IANA에 의해 할당됨
49152 ~ 65535 / Dynamic port ----- 임시(Ephemeral) 포트
소켓의 주소는 IP주소와 포트번호의 조합으로 이루어진다