깃허브(이하 '깃헙')는 개발자들의 놀이터이다. 하지만 놀이기구를 탈 줄 모르는 개발자들이 많아 필자가 깃헙을 사용하면서 터득한 내용들을 공유하려고 한다. 깃헙에서 놀고 싶고 전세계 개발자들과 교류하고 싶은 개발자들은 이 글을 참고하기를 바란다.


혹시 GitHub(깃헙)이 아닌 형상관리 도구인 Git(깃)을 찾는 분이리면 'Git의 개념과 기초 사용법'으로 가길 바란다.


https://github.com/MBKwon



1. 놀이터 몰색


   우선, 내가 놀고싶은 놀이터를 찾는 일이 필요하다. 내가 사용하는 주요 프로그래밍 언어, 관심있는 플랫폼, 사용중인 라이브러리/프레임워크와의 연관성 등 개발자들은 자신이 놀 놀이터에 관해 호불호가 갈리게 되어 있다. 깃헙에서 자신이 놀고 싶은 놀이터를 찾는 것도 하나의 일이다. 그럼, 놀이터를 어떻게 찾을 수 있을까?


    가장 손쉬운 방법은 자신이 사용하는 오픈소스 프로젝트를 기웃거리는 것이다. 필자의 경우, iOS 개발자이다. iOS 개발자이기 때문에 당연스럽게 접하는 것들이 있다. AFNetworking, FMDB, EGOCache 등 iOS 오픈소스 라이브러리를 접하게 된다. 깃헙에서 놀고 싶다면 이렇게 자신이 사용하는 오픈소스 프로젝트에 접속해봐라. 그곳이 가장 놀기 쉬운 놀이터라고 생각한다. 


    놀이터를 찾는 또다른 방법은 깃헙에서 제공해주는 'explore'를 이용하는 것이다. 깃헙 상단에서 볼 수 있는 메뉴이다. 해당 메뉴를 눌러보면 현재 깃헙에 있는 모든 놀이터들이 종류별, 테마별로 분류되어 있으며 이번 주/ 이번 달 별로 가장 인기있는 프로젝트들이 놓여 있다. 이곳을 탐험(explore)하다보면 자신이 관심을 가질 만한 곳을 발견할 수 있을 것이다.



2. 놀이터에서 친구 만들기


    놀이터를 찾았다. 놀이터에서는 아이들이 놀고 있다. 내가 아는 친구가 없다. 그럼 무엇부터 해야할까? 친구를 만들어라!! 놀이터에 들어가보면 'Watch, Star, Fork' 라는 버튼이 보일 것이다. Watch는 프로젝트의 각 이력들에 대해 알림을 받을 수 있다. Star는 북마크와 같은 기능이다. 마지막으로 Fork라는 친구가 제일 중요하다. 이는 나중에 설명하겠다.


    일단 놀기 위해서 놀이터의 판을 읽어야한다. 판을 읽기위해 사용되는 메뉴가 왼쪽에 보이는 'Code, Issue, Pull Request, Wiki' 이다. Code는 놀이터에 처음으로 들어오면 나타나는 화면으로 각 Code를 온라인에서 확인이 가능하다. 뿐만 아니라 release와 commit, contributor 또한 확인 가능하다. 즉, 놀이터의 현재의 겉모습을 전반적으로 확인할 수 있다.


    Issue는 각 개발자들에게 친숙한 단어이다. 이 단어가 친숙하지 않다면 자신의 Career를 의심해볼 필요가 있다. 깃헙의 Issue는 대화의 장이다. 프로젝트가 가지는 버그 및 사용법 등 프로젝트에 관해 생기는 모든 사항에 관하여 참여 중인 개발자들이 대화를 나누는 공간이다. '버그의 발생경로 및 해결 방법에 관한 논의', '라이브러리의 사용법이 어려워 사용법 개선을 위한 논의' 등 여러가지 갈래로 대화가 이루어 진다. Label을 이용하여 Issue들을 체계적으로 정리해 놓은 곳이 있다면 그곳은 놀기 좋은 놀이터이다. 하지만 모든 놀이터가 놀기 좋게 정리되어 있지는 않다. 물론, 대부분의 놀이터에서 대화는 영어로 이루어진다.



3. 놀이터에서 놀기


    Pull Request는 놀이터에서 할 수 있는 놀이 중, 필자의 생각에 가장 의미있고 재미있는 캐치볼과 같은 게임이다. Pull Request를 설명하기에 앞서 위에서 설명을 미룬 Fork부터 알고 넘어가자. 


    Fork는 상대방의 Branch에서 자신의 독자적인 Branch를 복사하는 것이다. 리눅스를 다루어보고 시스템 프로그래밍을 해본 사람은 Fork라는 말만 들어도 감이 올것이다. Git에서 Branch를 따는 것과 같은 이치이다. 자신의 소유의 Branch를 생성한다. 이 Branch는 기능 개선 및 버그 수정 등의 용도로 독자적인 개발을 진행할 때, 사용하게 된다. 


    다시 Pull Request를 설명하자면 Fork한 Branch의 작업이 완료되고 자신이 Fork했던 Main Branch로 Pull하기 위한 요청(Request)이다. Pull Request를 알리려면 먼저 자신이 어느 부분을 수정했고 어떻게 개선되었는지에 관해 적을 수 있는 창이 등장한다. 여기에 가능한 상대방이 이해하기 쉽도록 자신이 수정한 부분을 어필하고 영어로 기술한다. 바뀐 line에 대해서는 언급할 필요없다. Pull Request를 날리게 되면 알아서 Diff를 이용한 변경이력이 첨부되기 때문이다. 단지 수정한 부분이 발생하게될 효과에 대해 어필하면 된다. Main Branch 관리자가 Pull을 하게 되면 Main Branch에서 'Contributor'에 등록된 자신의 모습을 확인할 수 있을 것이다.

매번 볼때마다 흥미로운 일과 트렌드를 보여주는 챠트이다. 이번에 WWDC에서 새롭게 공개된 Swift가 순위권에 들기를 기대해 본다.




출처 : http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html


SVN & Git.pdf


The concept of Git.pdf




 위의 자료를 이용하여 Git에 관하여 공부하자!! SVN은 보통 저장소가 서버에 존재하게 된다. Git은 저장소가 내 컴퓨터에 존재한다. 그렇기 때문에 속도가 빠르다. 그리고 다른 사람과의 작업을 원한다면 내 컴퓨터의 저장소를 원격 저장소에 연결하면 된다. Commit은 내 컴퓨터의 저장소에 작업 내용을 올리는 것이고 원격 저장소에 작업 내용을 올리는 것은 Push라고 한다. 결과적으로 Git은 밑의 그림처럼 보여진다.





 위와 같은 구조로 인하여 Git이 갖는 장점은 무엇보다 빠르다는 것이다. Commit을 로컬 저장소에 하기 때문에 네트워크를 거치지 않고 당연히 빠를 수 밖에 없다. 네트워크가 불가한 상황에서도 작업을 계속할 수 있다. 로컬 저장소를 이용하기 때문이다.





 또 하나 알아두어야 할 것은 Stage(index라고도 부름)라고 부르는 영역이다. 이는 로컬 저장소에 Commit하기 전에 거치는 또 하나의 영역이다. Commit할 파일들은 먼저 Stage에 추가된다. Stage를 이용함으로써 SVN과 다르게 수정된 파일을 모두 Commit해야하는 상황을 피할 수 있다. Stage에 추가한 다음에 Commit하는 방식이 번거롭다면 


git commit -a


 위의 명령어를 이용해서 한번에 처리할 수 있다. Commit한 파일을 원격저장소에 Push하기 위해서 아래의 명령어를 사용한다.


git push


 지금까지 알아본 내용을 모두 정리하면 밑에와 같은 그림이 그려지게 된다.





 내 작업들이 오류가 발생 했을 때는 Pull을 이용하여 다른 사람들이 한 작업을 내려 받으면 된다. 원격 저장소에서 로컬 저장소로 내려받는 것은 Fetch라고 하고 내려받은 데이터를 병합하는 것은 Merge라고 한다. 그리고 위의 둘을 모두 하는 것은 Pull이다. 





 위에 설명한 Git의 기능 외에 특별한 기능들에 대해서도 알아보도록 하자. 먼저 Snapshot이다. Snapshot는 git에서 각 버전을 저장하는 기능이다. SVN은 각 버전의 차이점을 기록하지만 Git은 각 버전 자체를 저장한다. SVN은 새로운 버전을 받을 때, 파일과 각 버전의 변경내역을 다운로드 받게 된다. 하지만 Git은 해당 버전 자체만을 다운로드 하기 때문에 느리지 않다. 또한 로컬 저장소에서 받기 때문에 네트워크가 불가한 상황에서도 받을 수 있다.


 다음으로 알아볼 기능은 Branch이다. SVN에서 제공하는 Branch는 아래와 같은 디렉토리 구조이다. 파일 전체의 변경 내역만을 다른 디렉토리에 복사해 놓는다. 이는 Branch를 내려 받을 때, 변경내역을 순차적으로 적용하여 실제 파일을 만든 후에 네트워크를 통해 다운로드함으로써 느리고 부담스럽다.





 하지만 Git은 연속적으로 Snapshot이 순차적으로 이어지다가 Branch를 만들어서 관리한다. 참고로 Checkout은 SVN에서 작업 내용을 다운로드하는 기능이지만 Git에서는 Branch를 선택하는 기능입니다.





 다음 설명할 기능은 Rebase이다. Rebase는 Merge와 비슷한 기능이다. Master와 Branch를 통합하는 기능이다. 차이점은  Merge는 2개의 Branch와 2개의 Branch의 조상을 병합하는 3-Way-Merge를 실행한다. Rebase는 Master와 하나의 Branch를 병합하고 순차적으로 다른 Branch를 병합하여  히스토리를 상대적으로 깔끔하게 유지해준다. 밑의 그림으로 비교를 해보자.





 마지막으로 설명할 기능은 Tag이다. Tag는 SVN과 마찬가지로 각기 다른 Revision을 하나의 통합된 Version으로 저장하는 것으로 명령어를 통하여 지원하고 있다.



 이로서 Git의 기본적인 기능과 개념들을 익혔다. 이제 Git을 직접 설치하고 사용해보자. Git은 공개소프트웨어 개발에서 무지무지무지무지하게 널~~~~~~리 사용되고 있다. 그래서 사용법을 익혀둔다면 유익한 도구이다. 밑에 Git의 명령어들과 참고 사이트들을 기록한다. 



Git 공식 사이트 : http://git-scm.com/


Git 간편안내 : http://rogerdudler.github.com/git-guide/index.ko.html


Git Hub : https://github.com/

 세계적인 프로그래밍 언어의 추세를 확인할 수 있는 도표이다. 역시 C와 자바가 절대적이다. iOS 개발의 영향으로 Objective C의 성장이 꾸준하다. 애플의 약세와 상관없이 앱 스토어는 꾸준히 돈을 벌어다 주기 때문인 듯 하다. 이외에 웹 언어들이 보인다. Lisp과 Pascal, 어셈블리어도 눈에 띈다.






출처 : http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

소프트웨어 개발 생명 주기는 아는 데, SDLC(Software Development Life Cycle)

정보처리기사에서도 쉬운 문제로 등장한다.



1. 주먹구구식

크기가 매우 작은 소프트웨어 개발에 사용된다.


첫번째 버전 연구 -> 제품개발 ->운영모드/유지보수


2. 폭포수 모델

순차적으로 개발하는 전형적인 개발 모델


요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수


3. 원형 모델

Proto type을 만들어서 고객과 사용자가 함께 요구사항을 정제하면서 만들어가는 방법


요구사항 정의 -> 원형 설계 -> 원형 개발 -> 고객평가 -> 원형정제 -> (요구사항 수정) -> 엔지니어 제품 -> 제품개발


4. 나선형 모델

위험 분석을 추가한 점진적인 개발 방법


계획 및 정의 -> 위험 분석 -> 개발 -> 고객 평가

가상화는 컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어이다. "물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술"로 정의할 수 있다. 이것은 다중 논리 리소스로서의 기능을 하는 것처럼 보이는 서버, 운영 체제, 응용 프로그램, 또는 저장 장치와 같은 하나의 단일 물리 리소스를 만들어 낸다. 아니면 단일 논리 리소스처럼 보이는 저장 장치나 서버와 같은 여러 개의 물리적 리소스를 만들어 낼 수 있다.


출처 : http://ko.wikipedia.org/wiki/가상화

'Engineering > Computer' 카테고리의 다른 글

[Computer]가상화  (0) 2013.05.06
[Computer]CISC와 RISC  (0) 2013.04.27

CISC(Complex Instruction Set Computer)
모든 고급언어 문장들에 대해 각각 기계 명령어가 대응되도록 하는것


RISC(Reduced Instruction Set Computer)
CISC의 많은 명령어중 주로 쓰이는것만을 추려서 하드웨어로 구현하는 것


이것이 핵심 개념인데요..
구체적으로 장단점을 따져보겠습니다.
CISC의 단점이자 RISC의 장점은
CISC의 경우 하드웨어의 회로가 복잡해져서
RISC에 비해 가격이 비싸지고 발열이 많고 전력소모가 많게 됩니다.
CISC는 고급언어의 컴파일러의 번역과정을 간단하게 해줍니다.



즉, CISC 각각의 명령어는 머신코드는 길지만 전체 프로그램 사이즈는 RISC보다 작습니다. 
따라서 코드를 수행할 때 RISC가 메모리를 더 많이 참조해야 하므로....
[CISC가 RISC보다 빠른 요인이 됩니다.]

CISC는 복잡한 하드웨어를 가지게 되므로 보통 hard wired방식 보다는 microprogram 방식을 사용하게 됩니다.
RISC는 hard wired 방식을 사용할 수 있습니다.
[RISC가 CISC보다 빠른 요인이 됩니다.]

CISC는 레지스터의 양이 많을 필요가 없고 RISC는 레지스터의 양이 많아야 하므로....
(예>함수에 파라미터를 메모리에 저장하는 경우와 레지스터에 저장하는 경우의 차이) 
CISC가 메모리의 access가 많아지게 됩니다. 
[RISC가 CISC보다 빠른 요인이 됩니다.]

RISC머신이 파이프라인구현이 용이하다라고 합니다..
(이 부분은 명령어 길이가 동일하기 때문에.. 그런것인가요?
정확한 이유를 모르겠습니다. 설명부탁드립니다.)
[RISC가 CISC보다 빠른 요인이 됩니다.]



출처 : http://kldp.org/node/56072

'Engineering > Computer' 카테고리의 다른 글

[Computer]가상화  (0) 2013.05.06
[Computer]CISC와 RISC  (0) 2013.04.27




풀HD 스마트폰의 시대가 도래했다. 삼성전자는 갤럭시 S4를 출시했고 LG전자는 옵티머스G 프로, 팬텍은 베가 넘버6를 출시 했다.


갤럭시S4는 5인치 대화면에 1,920X1,080 해상도를 지원하는 풀HD 슈퍼 아몰레드(AMOLED) 디스플레이를 탑재해 초고화질 구현에 성공했다. 인치당화소수(ppi)는 441ppi로 전작인 갤럭시S3의 306ppi 대비 크게 높아졌다.


옵티머스G 프로와 베가 넘버6는 IPS(In Plane Switching) 액정표시장치(LCD) 디스플레이를 채택했다. 옵티머스G 프로는 5.5인치 화면에 풀HD 해상도를 지원해 인치당 화소 수를 처음으로 400ppi 이상으로 높였다. 국내에서 풀HD 스마트폰 경쟁에 포문을 열었던 팬택은 5.9인치 대화면에 풀HD 해상도를 지원해 373ppi를 구현했다.

 

세 제품 모두 풀HD급인 1920x1080 해상도를 지원하지만 갤럭시S4의 화면 크기가 5인치고 가장 작아 인치당 화소 수가 440ppi 수준으로 높아졌다. 하지만 인치당 화소 수는 320ppi 이상은 육안으로 구별이 어렵기 때문에 세 제품 모두 우열을 가리기 힘들다.


반면, 갤럭시S4는 다른 두 제품에 비해 대폭 얇아진 두께와 가벼운 무게를 자랑한다. 갤럭시S4의 두께는 7.9mm로 전작인 갤럭시S3의 9.0mm 대비 1mm 이상 줄어들었다. 옵티머스G 프로와 베가 넘버6의 두께는 각각 9.4mm와 9.9mm다.

 

하지만 배터리 용량은 두 제품에 비해 작은 화면을 채택한 갤럭시S4의 용량이 가장 뒤쳐진다. 갤럭시S4는 갤럭시S3의 2천100mAh에 비해 500mAh 늘어난 2천600mAh의 탈착식 배터리를 탑재했다. 옵티머스G 프로와 베가 넘버6는 모두 3천140mAh 배터리를 탑재했다.

하드웨어 스펙으로 우열을 가리기 힘든 세 제품은 사용자 환경과 운영체제인 안드로이드의 최적화 등 소프트웨어 지원에서 승부가 날 듯 하다.





물리/데이터 링크 계층

어떤 특정프로토콜을 규정하지 않고, 모든 표준과 기술 프로토콜을 지원한고 있다.



네트워크 계층

-인터넷 프로토콜(IP) : 데이터그램이라는 패킷안의 데이터를 전송한다. 각 데이터그램을 개별적으로 전송괴며 데이터그램은 서로 다른 경로로 보내질수 있으므로 순서대로 도착하지 않거나 중복되어 도착할 수 있다. IP는 경로를 기억하지 않으며 데이터그램이 도착하자마자 데이터그램을 다시 정렬할 수 있는 기능도 없다.


-주소변환 프로토콜(ARP) : IP주소를 물리주소로 변화시킨다.


-역주소변환 프로토콜(RARP) : IP주소를 물리주소로 변화시킨다.


-인터넷 제어 메시지 프로토콜(ICMP) : 송신자에게 데이터그램의 문제점을 알려주기 위해 호스트와 게이트웨이가 사용하는 메커니즘이다. ICMP는 질의와 오류보고 메시지를 보낸다.


-인터넷 그룹 메시지 프로토콜(IGMP) : 그룹수신자들에게 메시지를 동시에 전송하기 위해 사용된다.



전송 계층

-사용자 데이터그램 프로토콜(UDP) : 포트주소, 검사합 오류 제어 및 상위층으로부터 받은 데이터의 길이 정보만을 추가한 프로세스-대-프로세스 프로토콜이다.


-전송제어 프로토콜(TCP) : 신뢰성이 있는 스트림(Stream) 전송 포트-대-포트 프로토콜이다. TCP는 메시지를 작은 데이터 단위로 나누어 세그먼트라는 프레임에 넣는다. 각 세그먼트는 확인응답 수신한 후의 재졍렬을 위한 순서번호를 포함한다. 수신 종단에서는 데이터그램이 오는 대로 모아 순서번호로 재정렬한다.


-스트림 제어 전송 프로토콜(SCTP) : 인터넷을 통한 음성과 같은 보다 새로운 응용을 위한 지원을 제공한다. TCP와 UDP의 가장 좋은 특성을 조합한 전송 제어 프로토콜이다.


세션/표현/응용 계층

-SMTP

-FTP

-HTTP

-DNS

-SNMP

-TELNET

'Engineering > Network' 카테고리의 다른 글

[Network]OSI 계층별 프로토콜  (2) 2013.03.12
[Network]OSI 7 Layer  (0) 2013.03.09
  1. 2013.03.21 12:06

    비밀댓글입니다

  2. Favicon of https://jongyoungcha.tistory.com BlogIcon 앱등김치맨 2013.04.09 15:28 신고

    문범아 넌정말대단하다 어떻게 이렇게 꾸준히 블로그 글을 올리냐 ㅋㅋ 귀찮아서 난 안된당께



계층 1: 물리 계층(Physical layer)

물리 계층은 실제 장치들을 연결하기 위해 필요한 전기적, 물리적 세부 사항들을 정의한다. 예를 들어, 핀들의 배치나 전압, 전선의 명세 등이 이 계층에 포함된다. 허브나 리피터가 물리 계층의 장치이다. 기계적 구조와 전기적 특성을 규정한다. 물리 계층에서 수행되는 중요한 일들은 다음과 같다.

물리적인 정보 전달 매개체에 대한 연결의 성립 및 종료. 여러 사용자들 간의 통신 자원을 효율적으로 분배하는 데 관여. 예를 들어, 경쟁 상태의 해소나 흐름 제어 등. 통신 채널을 통해 전송되는 사용자 장치의 디지털 데이터를 이에 상응하는 신호들로 변환, 변조. 이 신호들은 구리선이나 광섬유 선을 통해 전달되는 신호들로, 예를 들어, SCSI가 여기에 속한다 네트워크상에서 데이터 비트를 전송하는 계층으로, 데이터 링크 개체간의 비트 전송을 위한 물리적 연결을 설정, 유지, 해제하기 위한 수단을 제공하며, 물리계층에서 데이터를 교환하는 방식은 회선교환, 메시지 교환, 패킷교환 방식이 있다. 전송 매체는 신호 보내는 방법을 정의한다


계층 2: 데이터 링크 계층(Data link layer)

데이터 링크 계층은 포인트 투 포인트(Point to Point) 간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC 기반의 오류 제어와 흐름 제어가 필요하다. 네트워크 위의 개체들 간 데이터를 전달하고, 물리 계층에서 발생할 수 있는 오류를 찾아 내고, 수정하는 데 필요한 기능적, 절차적 수단을 제공한다. 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다. 주소 체계는 계층이 없는 단일 구조이다. 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다. 이 외에도 HDLC나 ADCCP 같은 포인트 투 포인트(point-to-point) 프로토콜이나 패킷 스위칭 네트워크나 LLC, ALOHA 같은 근거리 네트워크용 프로토콜이 있다. 네트워크 브릿지나 스위치 등이 이 계층에서 동작하며, 직접 이어진 곳에만 연결할 수 있다.


계층 3: 네트워크 계층(Network layer)

네트워크 계층은 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질(QoS)을 제공하기 위한 기능적, 절차적 수단을 제공한다. 네트워크 계층은 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행한다. 라우터가 이 계층에서 동작하고 이 계층에서 동작하는 스위치도 있다. 데이터를 연결하는 다른 네트워크를 통해 전달함으로써 인터넷이 가능하게 만드는 계층이다. 논리적인 주소 구조(IP), 곧 네트워크 관리자가 직접 주소를 할당하는 구조를 가지며, 계층적(hierarchical)이다.

서브네트의 최상위 계층으로 경로를 설정하고, 청구 정보를 관리한다. 개방 시스템들의 사이에서 네트워크 연결을 설정, 유지, 해제하는 기능을 부여하고, 트랜스포트 계층사이에 네트워크 서비스 데이터 유닛(NSDU : Network Service Data Unit)을 교환하는 기능을 제공한다.


계층 4: 전송 계층(Transport layer)

전송 계층은 양 끝단(End to end)의 사용자들이 신뢰성있는 데이터를 주고 받을 수 있도록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다. 시퀀스 넘버 기반의 오류 제어 방식을 사용한다. 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고(stateful), 연결 기반(connection oriented)이다. 이는 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다. 가장 잘 알려진 전송 계층의 예는 TCP이다.

종단간(end-to-end) 통신을 다루는 최하위 계층으로 종단간 신뢰성 있고 효율적인 데이터를 전송하며, 기능은 오류검출 및 복구와 흐름제어 등을 수행한다.


계층 5: 세션 계층(Session layer)

세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 동시 송수신 방식(duplex), 반이중 방식(half-duplex), 전이중 방식(Full Duplex)의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다. 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.

통신하는 사용자들을 동기화하고 오류복구 명령들을 일괄적으로 다룬다.


계층 6: 표현 계층(Presentation layer)

표현 계층은 코드간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어 준다. MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다. 예를 들면, EBCDIC로 인코딩된 문서 파일을 ASCII로 인코딩된 파일로 바꿔 주는 것이 표현 계층의 몫이다.


계층 7: 응용 계층(Application layer)

응용 계층은 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다. 일반적인 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다. 응용 서비스의 예로, 가상 터미널(예를 들어, 텔넷), "Job transfer and Manipulation protocol" (JTM, 표준 ISO/IEC 8832) 등이 있다.


출처 : http://ko.wikipedia.org/wiki/OSI_모형

'Engineering > Network' 카테고리의 다른 글

[Network]OSI 계층별 프로토콜  (2) 2013.03.12
[Network]OSI 7 Layer  (0) 2013.03.09

+ Recent posts